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

Java 如何在堆文件中找到局部变量,java,visualvm,heap-dump,eclipse-memory-analyzer,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包含什么 但是我怎么能

我有一个j2ee应用程序,并通过visualVM监控它

假设我有这样一种方法:

public void doStuff(int param) {
    String s = getStringVariable(param);
    StringBuilder sb = new StringBuilder();
    //Do stuff with sb object
}
从线程点击中,我可以看到我的一些线程卡在上述方法中。因此,我生成了一个堆转储文件,以确定s和sb包含什么


但是我怎么能做到呢?我正在使用Eclipse内存分析器。

您可以从线程中获取局部变量,因为如果局部变量当前是活动的,那么这意味着该变量的唯一引用是它自己的线程

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

  • 单击操作栏中的“对象选项”按钮
  • 选择Java基础->线程概述和堆栈
  • 然后列出特定线程的对象:

    • 右键单击->列表对象->传出引用

    然后在标记中搜索局部变量,谢谢,现在我可以看到我所有的局部变量了。