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

jackietien pushed a commit to branch ty/AviodConstant
in repository https://gitbox.apache.org/repos/asf/tsfile.git

commit 19e3cc870fdf3cc38b8424c2315ab5ae8a094473
Author: JackieTien97 <[email protected]>
AuthorDate: Fri Jan 5 09:22:33 2024 +0800

    Avoid directly import sun.misc packages
---
 .../iotdb/tsfile/utils/RamUsageEstimator.java      | 40 +++++-----------------
 1 file changed, 9 insertions(+), 31 deletions(-)

diff --git 
a/common-api/src/main/java/org/apache/iotdb/tsfile/utils/RamUsageEstimator.java 
b/common-api/src/main/java/org/apache/iotdb/tsfile/utils/RamUsageEstimator.java
index 3aff9494..80f1f022 100644
--- 
a/common-api/src/main/java/org/apache/iotdb/tsfile/utils/RamUsageEstimator.java
+++ 
b/common-api/src/main/java/org/apache/iotdb/tsfile/utils/RamUsageEstimator.java
@@ -531,61 +531,39 @@ public final class RamUsageEstimator {
     }
   }
 
-  // These constant values are derived from sun.misc.Unsafe, as referencing 
this class was causing
-  // compilation issues.
-  // TODO: Verify that these values don't actually change from one version of 
the SDK to the other.
-  public static final int ARRAY_OBJECT_BASE_OFFSET = 16;
-  public static final int ARRAY_OBJECT_INDEX_SCALE = 4;
-  public static final int ARRAY_BOOLEAN_BASE_OFFSET = 16;
-  public static final int ARRAY_BOOLEAN_INDEX_SCALE = 1;
-  public static final int ARRAY_BYTE_BASE_OFFSET = 16;
-  public static final int ARRAY_BYTE_INDEX_SCALE = 1;
-  public static final int ARRAY_SHORT_BASE_OFFSET = 16;
-  public static final int ARRAY_SHORT_INDEX_SCALE = 2;
-  public static final int ARRAY_INT_BASE_OFFSET = 16;
-  public static final int ARRAY_INT_INDEX_SCALE = 4;
-  public static final int ARRAY_LONG_BASE_OFFSET = 16;
-  public static final int ARRAY_LONG_INDEX_SCALE = 8;
-  public static final int ARRAY_FLOAT_BASE_OFFSET = 16;
-  public static final int ARRAY_FLOAT_INDEX_SCALE = 4;
-  public static final int ARRAY_DOUBLE_BASE_OFFSET = 16;
-  public static final int ARRAY_DOUBLE_INDEX_SCALE = 8;
-  public static final int ARRAY_CHAR_BASE_OFFSET = 16;
-  public static final int ARRAY_CHAR_INDEX_SCALE = 2;
-
   public static long sizeOfBooleanArray(int length) {
-    return ARRAY_BOOLEAN_BASE_OFFSET + (((long) ARRAY_BOOLEAN_INDEX_SCALE) * 
length);
+    return alignObjectSize((long) NUM_BYTES_ARRAY_HEADER + length);
   }
 
   public static long sizeOfByteArray(int length) {
-    return ARRAY_BYTE_BASE_OFFSET + (((long) ARRAY_BYTE_INDEX_SCALE) * length);
+    return alignObjectSize((long) NUM_BYTES_ARRAY_HEADER + length);
   }
 
   public static long sizeOfShortArray(int length) {
-    return ARRAY_SHORT_BASE_OFFSET + (((long) ARRAY_SHORT_INDEX_SCALE) * 
length);
+    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Short.BYTES * 
length);
   }
 
   public static long sizeOfCharArray(int length) {
-    return ARRAY_CHAR_BASE_OFFSET + (((long) ARRAY_CHAR_INDEX_SCALE) * length);
+    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Character.BYTES * 
length);
   }
 
   public static long sizeOfIntArray(int length) {
-    return ARRAY_INT_BASE_OFFSET + (((long) ARRAY_INT_INDEX_SCALE) * length);
+    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Integer.BYTES * 
length);
   }
 
   public static long sizeOfLongArray(int length) {
-    return ARRAY_LONG_BASE_OFFSET + (((long) ARRAY_LONG_INDEX_SCALE) * length);
+    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Long.BYTES * 
length);
   }
 
   public static long sizeOfFloatArray(int length) {
-    return ARRAY_FLOAT_BASE_OFFSET + (((long) ARRAY_FLOAT_INDEX_SCALE) * 
length);
+    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Float.BYTES * 
length);
   }
 
   public static long sizeOfDoubleArray(int length) {
-    return ARRAY_DOUBLE_BASE_OFFSET + (((long) ARRAY_DOUBLE_INDEX_SCALE) * 
length);
+    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Double.BYTES * 
length);
   }
 
   public static long sizeOfObjectArray(int length) {
-    return ARRAY_OBJECT_BASE_OFFSET + (((long) ARRAY_OBJECT_INDEX_SCALE) * 
length);
+    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) 
NUM_BYTES_OBJECT_REF * length);
   }
 }

Reply via email to