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 <[email protected]>
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