I have a question about scavenging arising one of the runtime tests in runtime/mpagealloc.go. The test in question is the " AllFree1" test case in TestPageAllocAlloc.
According to my understanding, in the runtime, there is a distinction between reclaiming memory and scavenging memory. Reclaiming memory is reusing free memory for allocations while scavenging is returning memory back to the OS that is no longer needed by the application. Step 1. the test starts off by setting up some scavenging state by scavening one page at index 0, and two pages starting at index two scav: map[ChunkIdx][]BitRange{ BaseChunkIdx: {{0, 1}, {2, 2}}, }, If you inspect the bitmap, you can see the scavenged pages set starting at the appropriate index 0000000000000000000000000000000000000000000000000000000000001101 Step 2. It then allocates 5 pages in succession for iter, i := range v.5hits { address, scav := b.Alloc(i.npages) } Step 3. Afterwards, if you print the bits you can see the five allocations in the first positions The 5 allocations 0000000000000000000000000000000000000000000000000000000000011111 The corresponding scavenged bit map is all set to 0, so the allocations used the scavenged pages: 0000000000000000000000000000000000000000000000000000000000000000 So my question is....is that "scavenging" or more properly "reclaiming"? The allocations occupy the positions that were previously scavenged, so I'm guessing the memory has been re-used (in the logic of the test) rather than returned to the OS. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/1f889217-2c39-4aef-8fac-5f0cdd9a1176n%40googlegroups.com.