mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-06 23:39:31 +03:00
Do not call mi_abandoned_collect on allocation path as it consumes substantial amount of CPU time
This commit is contained in:
parent
911de68d3e
commit
2a3b8eb696
1 changed files with 0 additions and 8 deletions
|
@ -702,7 +702,6 @@ static mi_decl_noinline void mi_segment_visit_pages(mi_heap_t* heap, mi_segment_
|
|||
}
|
||||
|
||||
void mi_heap_drop_segment(mi_heap_t* heap, size_t targetSegmentCount) {
|
||||
bool segmentsDropped = false;
|
||||
|
||||
while (heap->tld->segments.count >= targetSegmentCount) {
|
||||
|
||||
|
@ -712,7 +711,6 @@ void mi_heap_drop_segment(mi_heap_t* heap, size_t targetSegmentCount) {
|
|||
break;
|
||||
}
|
||||
|
||||
segmentsDropped = true;
|
||||
// 2. when abandoning, mark all pages to no longer add to delayed_free
|
||||
mi_segment_visit_pages(heap, segmentToAbandon, &mi_heap_page_never_delayed_free, NULL);
|
||||
|
||||
|
@ -725,12 +723,6 @@ void mi_heap_drop_segment(mi_heap_t* heap, size_t targetSegmentCount) {
|
|||
mi_collect_t collect = MI_ABANDON;
|
||||
mi_segment_visit_pages(heap, segmentToAbandon, &mi_heap_page_collect, &collect);
|
||||
}
|
||||
|
||||
if (segmentsDropped) {
|
||||
// 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, false /* force? */, &heap->tld->segments);
|
||||
}
|
||||
}
|
||||
|
||||
void mi_heap_drop_segment_if_required(mi_heap_t* heap, size_t alloc_block_size)
|
||||
|
|
Loading…
Add table
Reference in a new issue