2016-01-06 73 views

回答

4

您是否想過使用totalMemory()功能Runtime職業 - docs? 也有像VisualVMJStat,例如一些免費工具:

jstat -gc <pid> <time> <amount> 

希望有所幫助。

+0

運行的代碼的特定時,片我感興趣的測量峯值的內存使用情況的發生。它看起來像totalMemory()不會返回此信息。 – Pinch

+0

測量特定代碼段的內存使用情況非常困難。你可以谷歌它,但完美的方法是不可用(目前)。 –

0

如果需要峯堆大小,您可以將所有的內存池這是類型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)); 
相關問題