diff --git a/ecmascript/mem/idle_gc_trigger.cpp b/ecmascript/mem/idle_gc_trigger.cpp index d75cf714b836514a1c4c6276764a30fde61e8770..e27c33de23486b028205d1f17170a997ce581750 100644 --- a/ecmascript/mem/idle_gc_trigger.cpp +++ b/ecmascript/mem/idle_gc_trigger.cpp @@ -181,7 +181,7 @@ bool IdleGCTrigger::CheckIdleYoungGC(bool isLongIdle) const } size_t expectIdleLimitSize = (newSpace->GetInitialCapacity() + newSpace->GetOvershootSize()) * IDLE_SPACE_SIZE_LIMIT_RATE; - return newSpace->GetObjectSize() >= expectIdleLimitSize; + return allocatedSizeSinceGC > IDLE_MIN_EXPECT_RECLAIM_SIZE && newSpace->GetObjectSize() >= expectIdleLimitSize; } bool IdleGCTrigger::CheckIdleLocalOldGC(const Heap *heap) const @@ -224,7 +224,7 @@ void IdleGCTrigger::TryTriggerIdleGC(TRIGGER_IDLE_GC_TYPE gcType) heap_->CollectGarbage(TriggerGCType::FULL_GC, GCReason::IDLE); } else if (CheckLocalBindingNativeTriggerOldGC() && !heap_->NeedStopCollection()) { LOG_GC(INFO) << "IdleGCTrigger: trigger local old GC by native binding size."; - heap_->CollectGarbage(TriggerGCType::FULL_GC, GCReason::IDLE_NATIVE); + heap_->CollectGarbage(TriggerGCType::OLD_GC, GCReason::IDLE_NATIVE); } else if (CheckIdleYoungGC(true) && !heap_->NeedStopCollection()) { LOG_GC(INFO) << "IdleGCTrigger: trigger young gc"; heap_->CollectGarbage(TriggerGCType::YOUNG_GC, GCReason::IDLE); diff --git a/ecmascript/mem/mem_controller.cpp b/ecmascript/mem/mem_controller.cpp index 9fc99e8f4023d832aa10b99c4eef48862b0a645b..2e09820f57874d6815b383eaa26cb13e5472c5f4 100644 --- a/ecmascript/mem/mem_controller.cpp +++ b/ecmascript/mem/mem_controller.cpp @@ -16,6 +16,7 @@ #include "ecmascript/mem/mem_controller.h" #include "ecmascript/mem/concurrent_marker.h" #include "ecmascript/mem/parallel_evacuator.h" +#include "ecmascript/mem/mem_controller_utils.h" namespace panda::ecmascript { MemController::MemController(Heap *heap) : heap_(heap), allocTimeMs_(GetSystemTimeInMs()) diff --git a/ecmascript/mem/mem_controller_utils.h b/ecmascript/mem/mem_controller_utils.h index 995e52b38e62dbafbab90bb868e8662a2989f42d..89bbc15aa35efd1ce9c38509964f2238c3f28945 100644 --- a/ecmascript/mem/mem_controller_utils.h +++ b/ecmascript/mem/mem_controller_utils.h @@ -23,7 +23,7 @@ #include "ecmascript/base/gc_ring_buffer.h" using BytesAndDuration = std::pair; -static inline BytesAndDuration MakeBytesAndDuration(uint64_t bytes, double duration) +inline BytesAndDuration MakeBytesAndDuration(uint64_t bytes, double duration) { return std::make_pair(bytes, duration); }