2012-09-30 42 views
1

在我的Java應用程序中,我顯示程序的內存使用情況。不幸的是它是零星的,經常是錯誤的。我目前的代碼是Java程序的內存使用不準確

component.setText("Memory usage : "+((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())/1024/1024) + "mb"); 

有時,它返回正確的值(應該是大約10-20mb),有時它會返回非常奇怪的值。這與其他正在運行的Java程序(特別是Netbeans)相關,但在沒有其他運行時仍會顯示。那聲明有什麼問題?有沒有更好的方式來更準確地表示內存使用情況?

+0

我不確定,但它是因爲垃圾收集器隨機運行並釋放內存。您可能希望在打印該程序之前運行垃圾回收器。 – Mike

+0

但實際使用完全是這樣(20與500相比).GC不會是造成很大差異的原因。 –

+0

使用VisuamVM連接並查看您的號碼是否與VisuamVM圖形匹配。您可以使用該工具執行一些快速分析。 – Jayan

回答

0

解決的問題。必須處理堆棧溢出,這不足以被捕獲爲異常,但足以激增內存使用量。