You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/11/26 13:33:45 UTC

[iotdb] 01/01: Add estimated Object[] Of ArrayList in TVList mem increment in mem control calculation

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

haonan pushed a commit to branch object_array
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 64d7f58150d790a1855d3720b1ab0f258654e176
Author: HTHou <hh...@outlook.com>
AuthorDate: Fri Nov 26 21:33:08 2021 +0800

    Add estimated Object[] Of ArrayList in TVList mem increment in mem control calculation
---
 .../org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java  | 8 ++++++++
 server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java      | 5 ++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
index 2fba8da..125e4a4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
@@ -18,6 +18,8 @@
  */
 package org.apache.iotdb.db.engine.storagegroup;
 
+import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.NUM_BYTES_ARRAY_HEADER;
+
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBConstant;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
@@ -322,6 +324,9 @@ public class TsFileProcessor {
                 ? TVList.tvListArrayMemSize(insertRowPlan.getDataTypes()[i])
                 : 0;
       }
+      // Estimate Object[] Of ArrayList in TVList mem Increment
+      // there is 2 array lists in TVList
+      memTableIncrement += (NUM_BYTES_ARRAY_HEADER * 1.5) * 2;
       // TEXT data mem size
       if (insertRowPlan.getDataTypes()[i] == TSDataType.TEXT) {
         textDataIncrement += MemUtils.getBinarySize((Binary) insertRowPlan.getValues()[i]);
@@ -387,6 +392,9 @@ public class TsFileProcessor {
             acquireArray == 0 ? 0 : acquireArray * TVList.tvListArrayMemSize(dataType);
       }
     }
+    // Estimate Object[] Of ArrayList in TVList mem Increment
+    // there is 2 array lists in TVList
+    memIncrements[0] += (end - start) * (NUM_BYTES_ARRAY_HEADER * 1.5) * 2;
     // TEXT data size
     if (dataType == TSDataType.TEXT) {
       Binary[] binColumn = (Binary[]) column;
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
index 95e2ca5..d581296 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
@@ -66,14 +66,13 @@ public class MemUtils {
   }
 
   public static long getBinarySize(Binary value) {
-    return RamUsageEstimator.NUM_BYTES_OBJECT_HEADER + RamUsageEstimator.sizeOf(value.getValues());
+    return RamUsageEstimator.sizeOf(value);
   }
 
   public static long getBinaryColumnSize(Binary[] column, int start, int end) {
     long memSize = 0;
-    memSize += (end - start) * RamUsageEstimator.NUM_BYTES_OBJECT_HEADER;
     for (int i = start; i < end; i++) {
-      memSize += RamUsageEstimator.sizeOf(column[i].getValues());
+      memSize += RamUsageEstimator.sizeOf(column[i]);
     }
     return memSize;
   }