如何在堆文件中找到本地变量

11

我有一个J2EE应用程序并通过visualVM进行监控。

假设我有一个像这样的方法:

public void doStuff(int param) {
    String s = getStringVariable(param);
    StringBuilder sb = new StringBuilder();
    //Do stuff with sb object
}

通过线程挖掘,我可以看到我的一些线程在上述方法中卡住了。因此,我生成了一个堆转储文件以找出s和sb包含的内容。

但是我该如何做呢?我正在使用Eclipse Memory Analyzer。

1个回答

18

如果一个本地变量当前仍然存活,则可以从您的线程中获取该变量,因为这意味着该变量的唯一引用是它自己的线程

因此,首先需要列出当前的线程,您可以通过以下方式完成:

  1. 从操作栏中单击对象选项按钮[]
  2. 选择Java基础知识 ->线程概述和堆栈。

然后要列出特定线程的对象:

  • 右键单击->列出对象->外部引用

然后在标记为<Java Local>的标签中搜索本地变量。


谢谢,现在我可以看到所有的本地变量了。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接