[K/N] Track object counts during sweep ^KT-55364

Previously object count was tracked via allocator. It adds additional
burden on every allocation. Tracking via sweeper is better because
it mostly happens on the GC thread during a concurrent sweep.
This commit is contained in:
Alexander Shabalin
2023-01-30 13:56:42 +01:00
committed by Space Cloud
parent 63231f7b73
commit 9fd05632f0
34 changed files with 326 additions and 249 deletions
@@ -12,13 +12,11 @@ import kotlin.test.*
@Test
fun `nothing new collected`() {
GC.collect()
GC.collect();
GC.collect()
val stat = GC.lastGCInfo
assertNotNull(stat)
assertEquals(stat.memoryUsageBefore.keys, stat.memoryUsageAfter.keys)
for (key in stat.memoryUsageBefore.keys) {
assertEquals(stat.memoryUsageBefore[key]!!.objectsCount, stat.memoryUsageAfter[key]!!.objectsCount)
assertEquals(stat.memoryUsageBefore[key]!!.totalObjectsSizeBytes, stat.memoryUsageAfter[key]!!.totalObjectsSizeBytes)
for (key in stat.sweepStatistics.keys) {
assertEquals(stat.sweepStatistics[key]!!.sweptCount, 0L)
}
}