Author: tedyu
Date: Fri May 24 23:05:53 2013
New Revision: 1486249
URL: http://svn.apache.org/r1486249
Log:
HBASE-8603 Backport HBASE-6921 to 0.94 (Ted Yu)
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java?rev=1486249&r1=1486248&r2=1486249&view=diff
==============================================================================
---
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
(original)
+++
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
Fri May 24 23:05:53 2013
@@ -20,6 +20,8 @@
package org.apache.hadoop.hbase.util;
+import java.util.concurrent.ConcurrentHashMap;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -141,10 +143,14 @@ public class ClassSize {
TREEMAP = align(OBJECT + (2 * Bytes.SIZEOF_INT) + align(7 * REFERENCE));
- STRING = align(OBJECT + ARRAY + REFERENCE + ((JDK7? 2: 3) *
Bytes.SIZEOF_INT));
-
- CONCURRENT_HASHMAP = align(((JDK7? 3: 2) * Bytes.SIZEOF_INT) + ARRAY +
- (6 * REFERENCE) + OBJECT);
+ // STRING is different size in jdk6 and jdk7. Just use what we estimate as
size rather than
+ // have a conditional on whether jdk7.
+ STRING = (int) estimateBase(String.class, false);
+
+ // CONCURRENT_HASHMAP is different size in jdk6 and jdk7; it looks like
its different between
+ // 23.6-b03 and 23.0-b21. Just use what we estimate as size rather than
have a conditional on
+ // whether jdk7.
+ CONCURRENT_HASHMAP = (int) estimateBase(ConcurrentHashMap.class, false);
CONCURRENT_HASHMAP_ENTRY = align(REFERENCE + OBJECT + (3 * REFERENCE) +
(2 * Bytes.SIZEOF_INT));