5
如何測量Java中的峯值堆內存使用情況? MemoryPoolMXBean跟蹤每個內存池的峯值使用情況,但不是整個堆。峯值堆使用不僅僅是不同堆內存池的總和。如何測量Java中的峯值堆內存使用情況?
如何測量Java中的峯值堆內存使用情況? MemoryPoolMXBean跟蹤每個內存池的峯值使用情況,但不是整個堆。峯值堆使用不僅僅是不同堆內存池的總和。如何測量Java中的峯值堆內存使用情況?
如果需要峯堆大小,您可以將所有的內存池這是類型HEAP的峯用大小。
下面是一個例子:
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));
運行的代碼的特定時,片我感興趣的測量峯值的內存使用情況的發生。它看起來像totalMemory()不會返回此信息。 – Pinch
測量特定代碼段的內存使用情況非常困難。你可以谷歌它,但完美的方法是不可用(目前)。 –