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