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

Sam*_*Sam 7 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
}
Run Code Online (Sandbox Code Playgroud)

从线程点击,我可以看到我的一些线程卡在上面的方法中.所以我已经生成了一个堆转储文件来找出s和sb包含的内容.

但是我该怎么做呢?我正在使用Eclipse Memory Analyzer.

Sal*_*lah 12

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

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

  1. 单击操作栏中的对象选项按钮 [].
  2. 选择Java Basics - > Threads Overview and Stacks.

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

  • 右键单击 - >列表对象 - >外出参考

然后在标记中搜索您的局部变量 <Java Local>