2017-04-16 92 views
1

我在linux命令下面使用進程ID來獲取進程的實際內存使用情況。使用進程ID獲取進程的實際內存使用情況

pmap -x pid | grep total 

但它沒有給出正確的內存分配大小的過程。當我在java代碼中使用下面的代碼時,它給出了java進程的正確內存分配大小。

Runtime runtime = Runtime.getRuntime(); 
runtime.gc(); 
long memory = runtime.totalMemory() - runtime.freeMemory(); 

如何使用pid獲得java進程的正確內存分配大小?

+0

你爲什麼認爲第一個數字是不正確的? – assylias

+0

我用java代碼獲取內存錯誤。我在tomcat服務器上執行該代碼並獲取錯誤。然後我得到該進程的pid並運行第一個命令並獲取這三個值。 (3422472 712208 694980)。我得到這三個中的最後一個kilobyte值(694980),並轉換成MB(接近694Mb)。在此之後,我增加服務器的堆大小(1024Mb)並再次運行代碼。問題沒有解決。當我運行第二個代碼時,它顯示1041Mb是進程內存大小。當我將堆大小增加到2048Mb時,它工作正常。 –

+0

@assylias請幫我解決這個問題 –

回答

0

您可以使用JDK中的工具jconsole實時查看正在運行的Java程序的內存分配情況。

相關問題