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