问题标签 [eclipse-memory-analyzer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 以 .heapdump 文件格式打开堆转储
这可能很容易令人尴尬,但请多多包涵。
我必须分析堆转储,并收到.heapdump
格式的文件,而我预期的.hprof
文件。
Eclipse 内存分析器拒绝打开.heapdump
文件,我不确定我应该使用哪个工具,或者应用哪个转换才能让它们与 mat 一起工作。
不幸的是,到目前为止,我对此事的搜索结果被基本教程所污染,即“如何打开 .heapdump 文件”让我得到了“如何分析堆转储”的结果。
从下面的评论中编辑
我已经尝试了一些建议(谢谢大家),但以下都没有奏效:
- 使用 VisualVM 打开 → 不允许打开文件
- Open with JHat → 抱怨幻数(显然期望另一种二进制格式,可能
hprof
) - 使用 Chrome 开发者工具打开 → 不支持该
.heapdump
格式,也不会打开文件
eclipse - 内存分析器和任务管理器之间分配的内存差异
我想分析一个非常庞大的 Java VM 进程的内存使用情况。
我在启动 Eclipse 内存分析工具时意识到的一件事是所谓的分配内存之间存在巨大差异:Windows 任务管理器/CMD 任务列表显示大约 5.5GB,而内存分析器仅显示 1.1GB。造成这种差异的原因是什么?
java - What cause the OutOfMemoryError: PermGen space? MemoryAnalyzer shows the JNI local reference as the GC Root
I am running a test suite(Many test cases, with TestNG framework) on apache-tomee, which requires deploying and undeploying very frequently. but unfortunately the Apache Tomee instance throws OOM before the test suite completes.
Jconsole show that the heap and non-heap memory usage would just grow and grow.
I use the Eclipse Memory Analyzer to analyze the HeapDump file, but found something odd:
MemoryAnalyzer domainator_tree
Path to GC Root, all JNI Local reference....
I couldn't find out who is the GC Root of class TestNG And cause the OOM, we don't have any JNI Code.
The ThreadLocalMemoryLeakPreventionListener is configured to be Enabled. Apache-TomEE with tomcat8.0.32 JDK1.7.0_67
add: When i switch to JDK1.7.0_80 things get better but still OOM finally. Memory Analyzer show the same thing.
multithreading - 是否可以使用线程转储找到线程的创建时间?
我使用jmap -dump:format=b,file=<file.dump> <PID>
命令生成 JVM 实例的线程转储。我只想知道是否可以使用生成的线程转储找到在 JVM 实例中运行的线程的创建时间。
java - 有什么方法可以分析截断的 Java 堆转储(hprof 文件)?
在我的工作中,我们遇到了一个难以重现的 OOM 问题。或者,更准确地说,它很容易在一个系统上重现,使该系统无法使用,但在给定相同输入的情况下很难在其他任何地方重现。
该应用程序正在使用服务包装器作为服务运行。我们确实设法更改了配置以通过在 OOM 上输出堆转储文件的选项来启动它,但不幸的是,它们被截断了,很可能是由于服务包装器在写入文件时超时并终止了进程。这很明显,因为最大内存设置为 1GB,而 hprof 文件小到 700MB,这对于 OOM 上的整个堆来说太小了。
额外配置包装器以使 java 进程有更长的时间来写出堆需要大量的跳跃,但我们正在使用以下两个选项来实现这一点:
问题是,我可以对截断的 hprof 文件做些什么有用的东西吗?Eclipse MAT 让他们窒息。Jhat 似乎加载了它们,但随后只显示了 3 个大小为 0 的 Java.Object 实例,没有别的。我试过YourKit,它不能写它的oids文件。
在我看来,这些文件中应该包含一些有用的、可访问的信息。有什么工具可以读取那里的内容吗?
感谢您的时间!
java - 如何使用内存分析器工具查找重复的库和版本冲突的类
IS 内存分析器工具允许查找给定输入应用程序中存在的重复库、类和版本冲突类
java - Heap Dump total Retained Heap < JVM Max memory 并且仍然 OutOfMemoryException?
我最近在我的 JVM 中遇到了一些 OutOfMemoryExceptions,并决定开始使用 MAT 分析我的堆转储,看看我是否可以查明哪些线程正在消耗我的大部分内存。
有趣的是,我查看了系统中的所有线程,发现所有线程的总保留堆约为 4.8G。但是,我的 JVM 的最大堆大小设置为 10G。我可以关联我的堆转储是一个 10G 文件。
这怎么可能?我的总保留大小是否需要接近 10G 限制才能生成 OOM?我在这里误解了什么吗?
根据概述选项卡:
确切的错误信息是:
我可以在我的堆转储中看到它试图复制的数组 (char[]) 相当大 (1G)。JVM 是在尝试执行时预先分配整个空间,copyOf
还是在每个元素的基础上完成?
我正在尝试将哪些参数传递给该copyOf()
方法,但不确定是否/如何在 MAT 中查看这些参数。有没有办法在线程视图中查看在 MAT 中调用的方法的参数,或者其他?