This is an automated email from the ASF dual-hosted git repository.
spricoder pushed a commit to branch feature/memory_auto
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/feature/memory_auto by this
push:
new cc5d5428c71 Change higher and lower and add check
cc5d5428c71 is described below
commit cc5d5428c71ff3acc1baf0ca83346fd9b28081ad
Author: spricoder <[email protected]>
AuthorDate: Sat Feb 22 15:07:46 2025 +0800
Change higher and lower and add check
---
.../apache/iotdb/commons/memory/MemoryManager.java | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
index 7b7587a76c2..92302cf47a6 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
@@ -546,6 +546,20 @@ public class MemoryManager {
return shrinkSize;
}
+ public boolean isAvailableToExpand() {
+ for (MemoryManager memoryManager : children.values()) {
+ if (memoryManager.isAvailableToExpand()) {
+ return true;
+ }
+ }
+ for (IMemoryBlock memoryBlock : allocatedMemoryBlocks.values()) {
+ if (memoryBlock.getMemoryBlockType() != MemoryBlockType.STATIC) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/** Whether is available to shrink */
public boolean isAvailableToShrink() {
return allocateTotalMemorySizeInBytes - totalMemorySizeInBytes
@@ -567,7 +581,9 @@ public class MemoryManager {
higherMemoryManager = child;
lowerMemoryManager = child;
} else {
- if (child.getUsedMemorySizeInBytes() >
higherMemoryManager.getUsedMemorySizeInBytes()) {
+ if (higherMemoryManager.isAvailableToExpand()
+ && child.getUsedMemorySizeInBytes()
+ > higherMemoryManager.getUsedMemorySizeInBytes()) {
higherMemoryManager = child;
}
if (lowerMemoryManager.isAvailableToShrink()
@@ -578,8 +594,8 @@ public class MemoryManager {
}
if (higherMemoryManager != null &&
!higherMemoryManager.equals(lowerMemoryManager)) {
// transfer
- long transferSize = higherMemoryManager.shrink();
- lowerMemoryManager.expandTotalMemorySizeInBytes(transferSize);
+ long transferSize = lowerMemoryManager.shrink();
+ higherMemoryManager.expandTotalMemorySizeInBytes(transferSize);
LOGGER.info(
"Transfer Memory Size {} from {} to {}",
transferSize,