From 08eee6ae8234356e3abad468d9dda144bebfc8e6 Mon Sep 17 00:00:00 2001 From: Sergiy Kuryata Date: Sat, 28 Dec 2024 11:46:30 -0800 Subject: [PATCH] Disable forced purge for abandoned segments --- src/heap.c | 2 +- src/segment.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/heap.c b/src/heap.c index 13722de6..7068268c 100644 --- a/src/heap.c +++ b/src/heap.c @@ -762,7 +762,7 @@ void mi_heap_drop_segment(mi_heap_t* heap, size_t targetSegmentCount, size_t all // collect abandoned segments (in particular, purge expired parts of segments in the abandoned segment list) // note: forced purge can be quite expensive if many threads are created/destroyed so we do not force on abandonment - _mi_abandoned_collect(heap, true /* force? */, &heap->tld->segments); + _mi_abandoned_collect(heap, false /* force? */, &heap->tld->segments); } } } diff --git a/src/segment.c b/src/segment.c index 024f6a50..e2930638 100644 --- a/src/segment.c +++ b/src/segment.c @@ -1588,7 +1588,7 @@ static mi_segment_t* mi_segment_try_reclaim(mi_heap_t* heap, size_t needed_slice mi_segment_t* segment_to_return = mi_segment_reclaim(segment, heap, block_size, reclaimed, tld); if (segment_to_return != NULL) { if (best_candidate_segment != NULL) { - mi_segment_try_purge(best_candidate_segment, true /* true force? */, tld->stats); + mi_segment_try_purge(best_candidate_segment, false /* true force? */, tld->stats); _mi_arena_segment_mark_abandoned(best_candidate_segment); } mi_segment_increment_reclaimed_stats(); @@ -1613,7 +1613,7 @@ static mi_segment_t* mi_segment_try_reclaim(mi_heap_t* heap, size_t needed_slice segment_to_abandon = segment; } - mi_segment_try_purge(segment_to_abandon, true /* true force? */, tld->stats); // force purge if needed as we may not visit soon again + mi_segment_try_purge(segment_to_abandon, false /* true force? */, tld->stats); // force purge if needed as we may not visit soon again _mi_arena_segment_mark_abandoned(segment_to_abandon); }