From 7e52383f87815e6d65248389dae648d94ced90f4 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Mon, 9 Jun 2025 12:02:32 +0800 Subject: [PATCH] Fix --- .../tsfile/write/schema/IMeasurementSchema.java | 3 ++- .../tsfile/write/schema/MeasurementSchema.java | 12 ++++++++++++ .../write/schema/VectorMeasurementSchema.java | 17 +++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/IMeasurementSchema.java b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/IMeasurementSchema.java index 740e76a55..ef83b4bbb 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/IMeasurementSchema.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/IMeasurementSchema.java @@ -23,6 +23,7 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; +import org.apache.tsfile.utils.Accountable; import java.io.IOException; import java.io.OutputStream; @@ -31,7 +32,7 @@ import java.util.Map; import java.util.stream.Collectors; -public interface IMeasurementSchema { +public interface IMeasurementSchema extends Accountable { MeasurementSchemaType getSchemaType(); diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java index 6c36dfe1d..f63c2dc2e 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java @@ -25,6 +25,7 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; +import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.apache.tsfile.utils.StringContainer; @@ -47,6 +48,10 @@ public class MeasurementSchema implements IMeasurementSchema, Comparable, Serializable { + private static final long INSTANCE_SIZE = + RamUsageEstimator.shallowSizeOfInstance(MeasurementSchema.class) + + RamUsageEstimator.shallowSizeOfInstance(TSEncodingBuilder.class); + private String measurementName; private TSDataType dataType; private TSEncoding encoding; @@ -455,4 +460,11 @@ public void setEncoding(TSEncoding encoding) { public void setCompressionType(CompressionType compressionType) { this.compressionType = compressionType; } + + @Override + public long ramBytesUsed() { + return INSTANCE_SIZE + + RamUsageEstimator.sizeOf(measurementName) + + RamUsageEstimator.sizeOfMap(props); + } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java index ab63a752b..c53fee324 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java @@ -25,6 +25,7 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; +import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.apache.tsfile.utils.StringContainer; @@ -42,6 +43,10 @@ public class VectorMeasurementSchema implements IMeasurementSchema, Comparable, Serializable { + private static final long INSTANCE_SIZE = + RamUsageEstimator.shallowSizeOfInstance(VectorMeasurementSchema.class); + private static final long BUILDER_SIZE = + RamUsageEstimator.shallowSizeOfInstance(TSEncodingBuilder.class); private String deviceId; private Map measurementsToIndexMap; @@ -422,4 +427,16 @@ public String toString() { sc.addTail(CompressionType.deserialize(compressor).toString()); return sc.toString(); } + + @Override + public long ramBytesUsed() { + return INSTANCE_SIZE + + RamUsageEstimator.sizeOf(deviceId) + + RamUsageEstimator.sizeOf(types) + + RamUsageEstimator.sizeOf(encodings) + + (long) encodingConverters.length * RamUsageEstimator.NUM_BYTES_OBJECT_REF + + Arrays.stream(encodingConverters) + .map(o -> Objects.nonNull(o) ? BUILDER_SIZE : 0) + .reduce(0L, Long::sum); + } }