This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/develop by this push: new 1dff37b5 Add methods for RamUsageEstimator 1dff37b5 is described below commit 1dff37b593522f4304668e23bc9d5f61dbf62694 Author: shuwenwei <55970239+shuwen...@users.noreply.github.com> AuthorDate: Tue Aug 12 16:56:53 2025 +0800 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