Wie kann die Speicherbelegung des Peak-Heapspeichers in Java gemessen werden? MemoryPoolMXBean verfolgt die Spitzenauslastung pro Speicherpool, jedoch nicht den gesamten Heap. Und die Peak-Heap-Nutzung ist nicht einfach die Summe verschiedener Heap-Speicherpools.Wie kann die Speicherbelegung des Peak-Heapspeichers in Java gemessen werden?
5
A
Antwort
4
0
Wenn Sie die Spitzen Heap-Größe benötigen, können Sie die verwendete Größe Spitze kombinieren aller Speicherpools, die von Typ HEAP. Hier
ein Beispiel:
List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans();
long total = 0;
for (MemoryPoolMXBean memoryPoolMXBean : pools)
{
if (memoryPoolMXBean.getType() == MemoryType.HEAP)
{
long peakUsed = memoryPoolMXBean.getPeakUsage().getUsed();
System.out.println("Peak used for: " + memoryPoolMXBean.getName() + " is: " + peakUsed);
total = total + peakUsed;
}
}
System.out.println("Total heap peak used: " + Util.format(total));
Ich bin daran interessiert, die maximale Speichernutzung Messung auftreten, wenn ein bestimmtes Stück Code ausgeführt wird. Es scheint, dass totalMemory() diese Informationen nicht zurückgibt. – Pinch
Es ist extrem schwierig, die Speichernutzung eines bestimmten Codeabschnitts zu messen. Sie können es googeln, aber ein perfekter Ansatz ist nicht verfügbar (derzeit). –