diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java index ecc1b66ed..88e275852 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java @@ -32,6 +32,7 @@ import static org.apache.tsfile.read.common.block.column.ColumnUtil.checkArrayRange; import static org.apache.tsfile.read.common.block.column.ColumnUtil.checkReadablePosition; import static org.apache.tsfile.read.common.block.column.ColumnUtil.checkValidRegion; +import static org.apache.tsfile.utils.RamUsageEstimator.NUM_BYTES_OBJECT_REF; import static org.apache.tsfile.utils.RamUsageEstimator.sizeOf; import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray; @@ -40,6 +41,8 @@ public class BinaryColumn implements Column { private static final int INSTANCE_SIZE = (int) RamUsageEstimator.shallowSizeOfInstance(BinaryColumn.class); + public static final int SHALLOW_SIZE_IN_BYTES_PER_POSITION = NUM_BYTES_OBJECT_REF + Byte.BYTES; + private final int arrayOffset; private int positionCount; private boolean[] valueIsNull; diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java index d9c560dc6..be952eaa9 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java @@ -77,6 +77,11 @@ public ColumnBuilder writeBinary(Binary value) { hasNonNullValue = true; positionCount++; + if (columnBuilderStatus != null) { + columnBuilderStatus.addBytes( + BinaryColumn.SHALLOW_SIZE_IN_BYTES_PER_POSITION + + (value == null ? 0 : (int) value.ramBytesUsed())); + } return this; } @@ -110,6 +115,9 @@ public ColumnBuilder appendNull() { hasNullValue = true; positionCount++; + if (columnBuilderStatus != null) { + columnBuilderStatus.addBytes(BinaryColumn.SHALLOW_SIZE_IN_BYTES_PER_POSITION); + } return this; }