String () { final long totalBytesAllocated = totalNativeBytesAllocated.get() + totalHeapBytesAllocated.get(); return String.format( "Statistics: {\n" + " pages: {\n" + " requested: %s\n" + " allocated: %s (~%2.1f%% of requested)\n" + " written: %s (~%2.1f%% of allocated)\n" + " reclaimed: %s (~%2.1f%% of allocated)\n" + " handed over: %s (~%2.1f%% of allocated)\n" + " request waited: %s (~%2.1f%% of requested)\n" + " }\n" + " total bytes: {\n" + " requested: %s\n" + " read: %s (~%.1f%% of requested)\n" + " written: %s\n" + " }\n\n" + " average durations: {\n" + " page request: %5.1f us (~%.0f MiB/s)\n" + " page load: %5.1f us (~%.0f MiB/s)\n" + " page write: %5.1f us (~%.0f MiB/s)\n" + " }\n\n" + " native memory: {\n" + " allocated: %s b (~%2.1f%% of total)\n" + " reclaimed: %s b (~%2.1f%% of allocated)\n" + " current: %s b\n" + " }\n" + " heap memory: {\n" + " allocated: %s b (~%.1f%% of total)\n" + " reclaimed: %s b (~%.1f%% of allocated)\n" + " current: %s b\n" + " }\n" + " housekeeperTurns: {done: %d, skipped: %d, total time %d ms}\n" + " closedStoragesReclaimed: %d\n" + "}", totalPagesRequested, totalPagesAllocated, (totalPagesAllocated.get() * 100.0 / totalPagesRequested.get()), totalPagesWritten, (totalPagesWritten.get() * 100.0 / totalPagesAllocated.get()), totalPagesReclaimed, (totalPagesReclaimed.get() * 100.0 / totalPagesAllocated.get()), totalPagesHandedOver, (totalPagesHandedOver.get() * 100.0 / totalPagesAllocated.get()), pageAllocationsWaited, (pageAllocationsWaited.get() * 100.0 / totalPagesRequested.get()), totalBytesRequested, totalBytesRead, (totalBytesRead.get() * 100.0 / totalBytesRequested.get()), totalBytesWritten, totalPagesRequestsNs.get() / 1000.0 / totalPagesRequested.get(), totalBytesRequested.get() * 1e9 / IOUtil.MiB / totalPagesRequestsNs.get(), totalPagesReadNs.get() / 1000.0 / totalPagesAllocated.get(), totalBytesRead.get() * 1e9 / IOUtil.MiB / totalPagesReadNs.get(), totalPagesWriteNs.get() / 1000.0 / totalPagesWritten.get(), totalBytesWritten.get() * 1e9 / IOUtil.MiB / totalPagesWriteNs.get(), totalNativeBytesAllocated, (totalNativeBytesAllocated.get() * 100.0 / totalBytesAllocated), totalNativeBytesReclaimed, (totalNativeBytesReclaimed.get() * 100.0 / totalNativeBytesAllocated.get()), nativeBytesCurrentlyUsed, totalHeapBytesAllocated, (totalHeapBytesAllocated.get() * 100.0 / totalBytesAllocated), totalHeapBytesReclaimed, (totalHeapBytesReclaimed.get() * 100.0 / totalHeapBytesAllocated.get()), heapBytesCurrentlyUsed, housekeeperTurnsDone, housekeeperTurnsSkipped, NANOSECONDS.toMillis(housekeeperTotalTimeNs), totalClosedStoragesReclaimed ); }