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

jackietien 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 2202f9e0 [to dev/1.1] Add methods for RamUsageEstimator
2202f9e0 is described below

commit 2202f9e053e5ccbba65643e1f4a7649541a31dfa
Author: shuwenwei <55970239+shuwen...@users.noreply.github.com>
AuthorDate: Thu Aug 14 10:56:31 2025 +0800

    [to dev/1.1] Add methods for RamUsageEstimator
---
 .../org/apache/tsfile/utils/RamUsageEstimator.java | 33 ++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git 
a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java 
b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
index 4c4217fd..404af510 100644
--- a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
+++ b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
@@ -27,12 +27,15 @@ import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.IdentityHashMap;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -310,6 +313,8 @@ public final class RamUsageEstimator {
   public static final long SHALLOW_SIZE_OF_CONCURRENT_HASHMAP =
       RamUsageEstimator.shallowSizeOfInstance(ConcurrentHashMap.class);
   public static long SHALLOW_SIZE_OF_CONCURRENT_HASHMAP_ENTRY;
+  public static final long ARRAY_LIST_INSTANCE_SIZE =
+      RamUsageEstimator.shallowSizeOfInstance(ArrayList.class);
 
   static {
     Map<Integer, Integer> map = new HashMap<>(1);
@@ -374,6 +379,34 @@ public final class RamUsageEstimator {
     return alignObjectSize(size);
   }
 
+  public static long sizeOfHashSet(Set<?> set) {
+    if (set == null) {
+      return 0L;
+    } else {
+      long size =
+          RamUsageEstimator.SHALLOW_SIZE_OF_HASHMAP
+              + (long) set.size() * 
RamUsageEstimator.SHALLOW_SIZE_OF_HASHMAP_ENTRY;
+      for (Object obj : set) {
+        size += RamUsageEstimator.sizeOfObject(obj);
+      }
+      return RamUsageEstimator.alignObjectSize(size);
+    }
+  }
+
+  public static long sizeOfArrayList(List<?> arrayList) {
+    if (arrayList == null) {
+      return 0L;
+    }
+    long size = ARRAY_LIST_INSTANCE_SIZE;
+    size +=
+        (long) RamUsageEstimator.NUM_BYTES_ARRAY_HEADER
+            + (long) arrayList.size() * (long) 
RamUsageEstimator.NUM_BYTES_OBJECT_REF;
+    for (Object obj : arrayList) {
+      size += RamUsageEstimator.sizeOfObject(obj);
+    }
+    return RamUsageEstimator.alignObjectSize(size);
+  }
+
   /**
    * Returns the size in bytes of a Collection object, including sizes of its 
values, supplying
    * {@link #UNKNOWN_DEFAULT_RAM_BYTES_USED} when object type is not well 
known. This method

Reply via email to