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;
}