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

Signed-off-by: Chia-Ping Tsai <chia7712@gmail.com>
This commit is contained in:
Xiang Li 2017-07-17 17:11:16 +08:00 committed by Chia-Ping Tsai
parent d5c6e11016
commit 946289113a
3 changed files with 36 additions and 10 deletions

View File

@ -564,7 +564,7 @@ public final class CellUtil {
public long heapSize() { public long heapSize() {
long sum = HEAP_SIZE_OVERHEAD + CellUtil.estimatedHeapSizeOf(cell); long sum = HEAP_SIZE_OVERHEAD + CellUtil.estimatedHeapSizeOf(cell);
if (this.tags != null) { if (this.tags != null) {
sum += ClassSize.sizeOf(this.tags, this.tags.length); sum += ClassSize.sizeOf(this.tags);
} }
return sum; return sum;
} }
@ -763,7 +763,7 @@ public final class CellUtil {
long sum = HEAP_SIZE_OVERHEAD + CellUtil.estimatedHeapSizeOf(cell); long sum = HEAP_SIZE_OVERHEAD + CellUtil.estimatedHeapSizeOf(cell);
// this.tags is on heap byte[] // this.tags is on heap byte[]
if (this.tags != null) { if (this.tags != null) {
sum += ClassSize.sizeOf(this.tags, this.tags.length); sum += ClassSize.sizeOf(this.tags);
} }
return sum; return sum;
} }
@ -889,7 +889,7 @@ public final class CellUtil {
public long heapSize() { public long heapSize() {
long sum = ClassSize.REFERENCE + super.heapSize(); long sum = ClassSize.REFERENCE + super.heapSize();
if (this.value != null) { if (this.value != null) {
sum += ClassSize.sizeOf(this.value, this.value.length); sum += ClassSize.sizeOf(this.value);
} }
return sum; return sum;
} }
@ -989,7 +989,7 @@ public final class CellUtil {
public long heapSize() { public long heapSize() {
long sum = ClassSize.REFERENCE + super.heapSize(); long sum = ClassSize.REFERENCE + super.heapSize();
if (this.value != null) { if (this.value != null) {
sum += ClassSize.sizeOf(this.value, this.value.length); sum += ClassSize.sizeOf(this.value);
} }
return sum; return sum;
} }

View File

@ -2608,8 +2608,8 @@ public class KeyValue implements ExtendedCell {
*/ */
return ClassSize.align(sum) + return ClassSize.align(sum) +
(offset == 0 (offset == 0
? ClassSize.sizeOf(bytes, length) // count both length and object overhead ? ClassSize.sizeOfByteArray(length) // count both length and object overhead
: length); // only count the number of bytes : length); // only count the number of bytes
} }
/** /**

View File

@ -159,7 +159,7 @@ public class ClassSize {
return ((num + 7) >> 3) << 3; return ((num + 7) >> 3) << 3;
} }
long sizeOf(byte[] b, int len) { long sizeOfByteArray(int len) {
return align(arrayHeaderSize() + len); return align(arrayHeaderSize() + len);
} }
} }
@ -204,7 +204,7 @@ public class ClassSize {
@Override @Override
@SuppressWarnings("static-access") @SuppressWarnings("static-access")
long sizeOf(byte[] b, int len) { long sizeOfByteArray(int len) {
return align(arrayHeaderSize() + len * UnsafeAccess.theUnsafe.ARRAY_BYTE_INDEX_SCALE); return align(arrayHeaderSize() + len * UnsafeAccess.theUnsafe.ARRAY_BYTE_INDEX_SCALE);
} }
} }
@ -444,8 +444,34 @@ public class ClassSize {
return model != null && model.equals("32"); 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);
} }
} }