This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch dev/1.1
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/dev/1.1 by this push:
     new 10e9ea5b Fix (#509)
10e9ea5b is described below

commit 10e9ea5b54879bb9c58b71be9e26a6537e447cf8
Author: Caideyipi <[email protected]>
AuthorDate: Mon Jun 9 12:29:20 2025 +0800

    Fix (#509)
---
 .../apache/tsfile/write/schema/IMeasurementSchema.java  |  3 ++-
 .../apache/tsfile/write/schema/MeasurementSchema.java   | 11 +++++++++++
 .../tsfile/write/schema/VectorMeasurementSchema.java    | 17 +++++++++++++++++
 3 files changed, 30 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 da474aec..9ebfbef4 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.encoding.encoder.Encoder;
 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;
@@ -30,7 +31,7 @@ import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Map;
 
-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 680a43cd..545d9cc2 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
@@ -24,6 +24,7 @@ import org.apache.tsfile.encoding.encoder.TSEncodingBuilder;
 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;
 
@@ -45,6 +46,9 @@ import java.util.Objects;
  */
 public class MeasurementSchema
     implements IMeasurementSchema, Comparable<MeasurementSchema>, Serializable 
{
+  private static final long INSTANCE_SIZE =
+      RamUsageEstimator.shallowSizeOfInstance(MeasurementSchema.class)
+          + RamUsageEstimator.shallowSizeOfInstance(TSEncodingBuilder.class);
 
   private String measurementId;
   private byte type;
@@ -446,4 +450,11 @@ public class MeasurementSchema
   public void setCompressor(byte compressor) {
     this.compressor = compressor;
   }
+
+  @Override
+  public long ramBytesUsed() {
+    return INSTANCE_SIZE
+        + RamUsageEstimator.sizeOf(measurementId)
+        + 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 1a24538a..9b157540 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.encoding.encoder.TSEncodingBuilder;
 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 @@ import java.util.Objects;
 
 public class VectorMeasurementSchema
     implements IMeasurementSchema, Comparable<VectorMeasurementSchema>, 
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<String, Integer> measurementsToIndexMap;
@@ -422,4 +427,16 @@ public class VectorMeasurementSchema
     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);
+  }
 }

Reply via email to