在运行时查看Java堆内容

时间:2011-02-08 11:41:25

标签: java memory jvm

我正在寻找任何允许我在运行时查看如何在堆上创建对象的工具。 我正在使用VisualVM - 配置文件但是无法找到何时创建特定类型的变量(我正在查找的变量)。也许我做错了什么...... 我还要感谢如何使用任何API获取此类信息。

此致 马尔钦

3 个答案:

答案 0 :(得分:4)

通常情况下,个人资料工具(例如JProfiler)会允许您查看此内容 - 请参阅Allocation recording explained截屏视频。

但是,他们通过将代理程序附加到JVM来实现此目的,该代理程序允许它们拦截低级别操作 - 这些信息通常不可供用户或Java程序使用。因此,您将无法通过JMX应用程序(如JConsole或JVisualVM)查看堆。

答案 1 :(得分:2)

在VisualVM Profiler中,选择“设置”并指定要分析的类。也许你还需要查看哪个记录分配堆栈的选项。

答案 2 :(得分:1)

听起来您正在尝试调试程序,并且使用调试器将是最佳选择。在为变量分配您要查找的值时,您应该能够添加条件断点来停止程序。这将允许您查看当时的所有值和调用堆栈,以查看调用它的内容。