2013-01-21 21 views
2

採樣我使用的Java VM可視化的內存採樣功能,我不能回答的問題:內存與jvisualvm

  1. 爲什麼有這麼多的情況下產生的?

  2. 爲什麼這些實例和字節數不斷增加?

例如,我創建了一個非常簡單的Java程序如下:

public class TestMemory{ 
    public static void main(String[] args) throws InterruptedException { 
     System.out.println("Hello"); 
     Thread.sleep(60 * 60 * 1000); 
    } 
} 

而且我可以在Java VM可視化看到,有611類。實例數量從25,000增加到接近50,000,然後回落到約25,000。實例減少的原因可能是GC引起的,但我不知道爲什麼這些數字如此動態,即使我沒有對我的程序做任何事情。

回答

4

您正在查看的實例和字節數是cost of monitoring an app from VisualVM。 VisualVM輪詢各種JVM MBean,不斷分析來自應用程序的值更改。

要確認這一點,你可以去採樣器選項卡。點擊每線程分配子選項卡。查看繁忙線程是否爲RMI TCP連接(n)。這個線程應該有一個高字節分配每秒。

我很好奇如何優化這個,因此發佈了更具體的question