如何在Heap文件中找到局部变量

时间:2014-03-18 21:33:24

标签: java visualvm heap-dump eclipse-memory-analyzer

我有一个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 个答案:

答案 0 :(得分:12)

你可以从你的线程中获取局部变量,因为如果局部变量当前是实时的,那么这意味着该变量的唯一引用是它自己的线程。 / p>

首先,您需要列出当前的线程,您可以通过以下方式执行此操作:

  1. 点击操作栏 []
  2. 中的对象选项按钮
  3. 选择Java基础 - >线程概述和堆栈。
  4. 然后列出特定线程的对象:

    • 右键单击 - >列表对象 - > OutGoing references

    然后在标记<Java Local>

    中搜索您的本地变量