diff --git a/include/mimalloc/types.h b/include/mimalloc/types.h index 72c8d0a7..53c543d0 100644 --- a/include/mimalloc/types.h +++ b/include/mimalloc/types.h @@ -324,7 +324,7 @@ typedef struct mi_page_s { // (Except for large pages since huge objects are allocated in 4MiB chunks) #define MI_SMALL_MAX_OBJ_SIZE ((MI_SMALL_PAGE_SIZE-MI_PAGE_INFO_SIZE)/8) // < 11 KiB #define MI_MEDIUM_MAX_OBJ_SIZE ((MI_MEDIUM_PAGE_SIZE-MI_PAGE_INFO_SIZE)/8) // < 128 KiB -#define MI_LARGE_MAX_OBJ_SIZE ((MI_LARGE_PAGE_SIZE-MI_PAGE_INFO_SIZE)/4) // < 1 MiB +#define MI_LARGE_MAX_OBJ_SIZE ((MI_LARGE_PAGE_SIZE-MI_PAGE_INFO_SIZE)/8) // < 1 MiB #define MI_LARGE_MAX_OBJ_WSIZE (MI_LARGE_MAX_OBJ_SIZE/MI_SIZE_SIZE) diff --git a/src/arena.c b/src/arena.c index b2113ec0..bc88acf3 100644 --- a/src/arena.c +++ b/src/arena.c @@ -280,7 +280,7 @@ static bool mi_arena_reserve(mi_subproc_t* subproc, size_t req_size, bool allow_ if (arena_count >= 1 && arena_count <= 128) { // scale up the arena sizes exponentially every 4 entries - const size_t multiplier = (size_t)1 << _mi_clamp(arena_count/2, 0, 16); + const size_t multiplier = (size_t)1 << _mi_clamp(arena_count/4, 0, 16); size_t reserve = 0; if (!mi_mul_overflow(multiplier, arena_reserve, &reserve)) { arena_reserve = reserve;