2011-02-08 46 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

这听起来像你正试图调试一个程序,使用调试器将是最好的选择。你应该能够添加一个条件断点来停止程序,当一个变量被赋值你正在寻找的值时。这将允许您查看当时的所有值以及调用堆栈,以查看创建它所调用的内容。