9

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

可以说我有这样的方法:

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

从线程水龙头,我可以看到我的一些线程卡在上述方法中。所以我生成了一个堆转储文件来弄清楚 s 和 sb 包含什么。

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

4

1 回答 1

14

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

所以首先你需要列出你当前的线程,你可以这样做:

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

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

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

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

于 2014-03-18T21:34:31.763 回答