Repository: hbase
Updated Branches:
  refs/heads/branch-2 d5c6e1101 -> 946289113


HBASE-18389 Remove byte[] from formal parameter of sizeOf() of ClassSize, 
ClassSize.MemoryLayout and ClassSize.UnsafeLayout

Signed-off-by: Chia-Ping Tsai <chia7...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/94628911
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/94628911
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/94628911

Branch: refs/heads/branch-2
Commit: 946289113a1a867a6d15ba2c147b2f05b28fc806
Parents: d5c6e11
Author: Xiang Li <wate...@gmail.com>
Authored: Mon Jul 17 17:11:16 2017 +0800
Committer: Chia-Ping Tsai <chia7...@gmail.com>
Committed: Sat Jul 22 02:16:09 2017 +0800

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hbase/CellUtil.java  |  8 ++---
 .../java/org/apache/hadoop/hbase/KeyValue.java  |  4 +--
 .../org/apache/hadoop/hbase/util/ClassSize.java | 34 +++++++++++++++++---
 3 files changed, 36 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/94628911/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java
index 56de21b..1146de4 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java
@@ -564,7 +564,7 @@ public final class CellUtil {
     public long heapSize() {
       long sum = HEAP_SIZE_OVERHEAD + CellUtil.estimatedHeapSizeOf(cell);
       if (this.tags != null) {
-        sum += ClassSize.sizeOf(this.tags, this.tags.length);
+        sum += ClassSize.sizeOf(this.tags);
       }
       return sum;
     }
@@ -763,7 +763,7 @@ public final class CellUtil {
       long sum = HEAP_SIZE_OVERHEAD + CellUtil.estimatedHeapSizeOf(cell);
       // this.tags is on heap byte[]
       if (this.tags != null) {
-        sum += ClassSize.sizeOf(this.tags, this.tags.length);
+        sum += ClassSize.sizeOf(this.tags);
       }
       return sum;
     }
@@ -889,7 +889,7 @@ public final class CellUtil {
     public long heapSize() {
       long sum = ClassSize.REFERENCE + super.heapSize();
       if (this.value != null) {
-        sum += ClassSize.sizeOf(this.value, this.value.length);
+        sum += ClassSize.sizeOf(this.value);
       }
       return sum;
     }
@@ -989,7 +989,7 @@ public final class CellUtil {
     public long heapSize() {
       long sum = ClassSize.REFERENCE + super.heapSize();
       if (this.value != null) {
-        sum += ClassSize.sizeOf(this.value, this.value.length);
+        sum += ClassSize.sizeOf(this.value);
       }
       return sum;
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/94628911/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
index 9b9dc43..98cf9cb 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
@@ -2608,8 +2608,8 @@ public class KeyValue implements ExtendedCell {
      */
     return ClassSize.align(sum) +
         (offset == 0
-          ? ClassSize.sizeOf(bytes, length) // count both length and object 
overhead
-          : length);                        // only count the number of bytes
+          ? ClassSize.sizeOfByteArray(length)  // count both length and object 
overhead
+          : length);                           // only count the number of 
bytes
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/94628911/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
----------------------------------------------------------------------
diff --git 
a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
index 000e99a..c31ee83 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
@@ -159,7 +159,7 @@ public class ClassSize {
       return  ((num + 7) >> 3) << 3;
     }
 
-    long sizeOf(byte[] b, int len) {
+    long sizeOfByteArray(int len) {
       return align(arrayHeaderSize() + len);
     }
   }
@@ -204,7 +204,7 @@ public class ClassSize {
 
     @Override
     @SuppressWarnings("static-access")
-    long sizeOf(byte[] b, int len) {
+    long sizeOfByteArray(int len) {
       return align(arrayHeaderSize() + len * 
UnsafeAccess.theUnsafe.ARRAY_BYTE_INDEX_SCALE);
     }
   }
@@ -444,8 +444,34 @@ public class ClassSize {
     return model != null && model.equals("32");
   }
 
-  public static long sizeOf(byte[] b, int len) {
-    return memoryLayout.sizeOf(b, len);
+  /**
+   * Calculate the memory consumption (in byte) of a byte array,
+   * including the array header and the whole backing byte array.
+   *
+   * If the whole byte array is occupied (not shared with other objects), 
please use this function.
+   * If not, please use {@link #sizeOfByteArray(int)} instead.
+   *
+   * @param b the byte array
+   * @return the memory consumption (in byte) of the whole byte array
+   */
+  public static long sizeOf(byte[] b) {
+    return memoryLayout.sizeOfByteArray(b.length);
+  }
+
+  /**
+   * Calculate the memory consumption (in byte) of a part of a byte array,
+   * including the array header and the part of the backing byte array.
+   *
+   * This function is used when the byte array backs multiple objects.
+   * For example, in {@link org.apache.hadoop.hbase.KeyValue},
+   * multiple KeyValue objects share a same backing byte array ({@link 
org.apache.hadoop.hbase.KeyValue#bytes}).
+   * Also see {@link org.apache.hadoop.hbase.KeyValue#heapSize()}.
+   *
+   * @param len the length (in byte) used partially in the backing byte array
+   * @return the memory consumption (in byte) of the part of the byte array
+   */
+  public static long sizeOfByteArray(int len) {
+    return memoryLayout.sizeOfByteArray(len);
   }
 
 }

Reply via email to