Slide 7
Slide 7 text
Arena
«PoolChunkList»
qInit [0%, 25%)[1]
«PoolChunkList»
q000 (0%, 50%)
«PoolChunkList»
q025 (25%, 75%)
«PoolChunkList»
q050 (50%, 100%)
«PoolChunkList»
q075 (75%, 100%)
«PoolChunkList»
q100 [100%, 100%]
PoolChunk
PoolChunk
PoolChunk
PoolChunk
PoolChunk
PoolChunk
A new PoolChunk goes here
A full PoolChunk goes here
●
PoolChunk – a 16[2] MiB memory block
● Tries the list with higher chance first:
●
q050 → q025 → q000 → qInit → q075
● Not pooled if > chunk.capacity
● Moved down when:
●
chunk.usage >= list.maxUsage
● Moved up when:
●
chunk.usage < list.minUsage
● But never to qInit
● Destroyed when
●
chunk.usage == 0 &&
!qInit.contains(chunk)
[1] Note the range expression
● [ or ] – inclusive, ( or ) – exclusive
[2] Configurable