2011-02-08 96 views
4

我正在尋找任何工具,可以讓我看到如何在運行時在堆上創建對象。 我正在使用VisualVM - 配置文件,但無法找到特定類型的變量(我正在尋找的)正在創建。也許我做錯了什麼... 我也將感激得到任何提示如何使用任何API獲取此類信息。查看運行時的java堆內容

問候, 馬辛

回答

4

通常,分析器(如JProfiler)將讓你看到這一點 - 例如見Allocation recording explained截屏。

但是,他們通過將代理附加到JVM來實現此目的,該代理允許他們攔截低級操作 - 通常不會向用戶或Java程序提供此信息。因此,您將無法通過JMX應用程序(例如JConsole或JVisualVM)查看堆。

+0

感謝您的提示,我會盡力讓你知道。 – 2011-02-08 13:44:13

+0

VisualVM具有很好的功能,這是heapdump - 反映堆內容,可以非常有用。順便說一句 - 如何從JProfiler連接任何正在運行的應用程序? – 2011-02-08 22:42:48

2

在VisualVM Profiler中,選擇設置並指定要分析的類。也許你也需要看看哪個記錄分配堆棧的選項。

+0

heapdump hepled hepled me看到當前的堆內容,謝謝 – 2011-02-09 08:11:56

1

這聽起來像你正試圖調試一個程序,使用調試器將是最好的選擇。你應該能夠添加一個條件斷點來停止程序,當一個變量被賦值你正在尋找的值時。這將允許您查看當時的所有值以及調用堆棧,以查看創建它所調用的內容。