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

标签 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
}

从thread tap可以看出我的一些thread卡在了上面的方法中。所以我生成了一个堆转储文件来弄清楚 s 和 sb 包含什么。

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

最佳答案

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

所以首先你需要列出你当前的话题,你可以通过以下方式做到这一点:

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

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

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

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

关于java - 如何在堆文件中找到局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22491527/

相关文章:

Java 监控工具,可以查看 "real time"处的堆栈跟踪

java - "Heap size"的增长速度比 "Used heap"快得多

javascript - V8 Javascript 堆转储模式

java - 以 .heapdump 文件格式打开堆转储

Java 7 二进制文字说明

java - 在 JUnit 测试用例中触发 Spring 批处理作业

java - JSTL <c :forEach> not supports List<Integer>?

java - ArrayLists 和 Arrays 如何在 Java 中相互交互?

java - 如何找到 Java 中哪些对象/线程导致堆空间错误? (VisualVM、内存分析器)

java - 如何进行heap dump?