问题标签 [eclipse-mat]

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.

0 投票
1 回答
375 浏览

java - Eclipse MAT OQL 某个包中的类列表

使用 Eclipse MAT 1.9.1 OQL

我想列出某个包中堆转储中的所有类。

我正在尝试查询:

得到:

java.lang.NullPointerException: idx at org.eclipse.mat.parser.internal.oql.compiler.Operation$GreaterThan.evalNull(Operation.java:232) at org.eclipse.mat.parser.internal.oql.compiler.Operation $RelationalOperation.compute(Operation.java:92) at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.accept(OQLQueryImpl.java:1161) at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.accept (OQLQueryImpl.java:1151) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.filterClasses(OQLQueryImpl.java:1133) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.doFromItem(OQLQueryImpl.java :921) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.execute(OQLQueryImpl.java:667) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.internalExecute(OQLQueryImpl.java:690) 在org.eclipse.mat.inspections.OQLQuery.execute(OQLQuery.java:52) 在 org.eclipse.mat.inspections。OQLQuery.execute(OQLQuery.java:1) 在 org.eclipse.mat.query.registry.ArgumentSet.execute(ArgumentSet.java:132) 在 org.eclipse.mat.ui.snapshot.panes.OQLPane$OQLJob.doRun( OQLPane.java:468) 在 org.eclipse.mat.ui.editor.AbstractPaneJob.run(AbstractPaneJob.java:34) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)

请指教。

0 投票
0 回答
38 浏览

eclipse-mat - Eclipse Memory Analyzer 识别 JDBC 泄漏

我试图识别我们的应用程序中的 JDBC 泄漏。我获得了一个堆转储,它向我显示了使用中的计数

OQL 结果

传入对象

但是我怎样才能找到阻止连接的应用程序类的堆栈跟踪呢?

0 投票
1 回答
392 浏览

java - Java 堆转储文件 (.hprof) 远大于 Eclipse MAT 中的堆大小

我在使用 Java 的生产中经常遇到一些完整的 GC 问题,我怀疑内存是由网络库分配的,用于缓冲 TCP 请求结果。

当内存使用率很高(大约 8GB)时,我已经转储了 Java 堆。我试图用eclipse MAT分析.HPROF文件,文件大约8GB。

但是在 Eclipse MAT 中,总堆大小约为 200 MB,所以我找不到哪些对象占用了 8GB 堆内存。

由于 eclipse MAT 没有显示完整的堆转储内容,我不知道如何找到应用程序占用这么多内存的原因。

0 投票
1 回答
104 浏览

java - 内存不足:元空间

我在元空间中出现内存不足。正如我在谷歌搜索后理解的那样,元空间中的内存不足错误可能是由于 Classloader 中的泄漏。因此,为此我开始分析 Eclipse MAT 中的堆转储并打开“类加载器资源管理器”,它给出以下内容: 在此处输入图像描述

正如我从上述数据中了解到的那样,com.newrelic.bootstrap.BootstrapAgent$JVMAgentClassLoader 占用了 396,707 个未进行垃圾回收的实例。我的理解正确吗?

在我选择了这一行并打开“GC Roots 的路径 -> 排除所有幻象/弱/软 Ref”后,我观察到 Shallow Heap 和 Retained Heap 分别为 96 和 231,040。

在我为类 org.apache.felix.framework.BundleWiringImpl$BundleClassLoader 在“类加载器资源管理器”中选择另一行并再次打开“GC 根路径-> 排除所有幻象/弱/软引用”之后,现在我看到了这些数据:

在此处输入图像描述

从这些数据中,是否可以安全地得出结论,在此类中存在泄漏: com.newrelic.agent.util.DefaultThreadFactory$AgentThreadImpl 不是垃圾收集的?

如果没有,请建议我还应该检查什么?

0 投票
1 回答
888 浏览

linux - org.eclipse.swt.SWTError: 没有更多句柄 [gtk_init_check() failed]

我正在尝试在 Linux(ubuntu 18.04)上使用 eclipse MAT 工具并收到以下错误:

如果你们知道任何解决问题的方法,将不胜感激。

已经解决了关于 stackoverflow 的所有类似问题以及以下链接: https ://unix.stackexchange.com/questions/94497/org-eclipse-swt-swterror-no-more-handles-gtk-init-check-运行时失败

但没有任何帮助。

0 投票
1 回答
55 浏览

eclipse - HEAP DUMP 太大,无法在 Eclipse MAT 中打开

我有一个堆转储导致我的程序出现内存不足异常,堆转储的大小为 12GB,因此我无法在我的 MAT 分析器中加载它,我可以尝试哪些替代方案,或者是否有我可以将堆转储上传到 MAT。

0 投票
1 回答
43 浏览

garbage-collection - 如何获取 JSON/XML 格式的 Eclipse MAT 内存泄漏可疑报告?

我正在尝试将 Java 内存分析添加到我的 devops 管道中。为此,我正在使用 Eclipse MAT 命令行脚本。一旦我提供 hprof 文件作为输入,它就会生成可疑报告。我需要解析这个 HTML 报告并据此做出决定。这很麻烦,而且解析也不是结构化的。我想要 XML/JSON 报告,或者我想看看 Eclipse MAT 是如何生成实际报告的。如果我发现我可以获取代码并根据我的需要进行自定义。对此有任何建议。

0 投票
0 回答
69 浏览

java - Identifying memory leak suspects

My application is a Java Spring boot app that expose set of SOAP APIs. It uses JAXB2 for object marshaling and un-marshaling. App use large number of south bound SOAP end points. I can see a steady slow memory growth in the app. I took a heap dump and analyzed it using MAT. MAT has given following leak suspects. How can I find the root cause of memory leak ?

enter image description here

enter image description here

enter image description here

enter image description here

0 投票
1 回答
174 浏览

java - Java 内存问题:Java.lang.ref.finalizer 对象

在大多数关于由终结器对象引起的内存泄漏的研究中,无论是在我们的代码中还是在依赖库中,都应该覆盖 finalize 方法。但在我的整个项目中,它无处使用。(我正在使用 Java8)

我正面临内存问题,对于我的服务,一旦我重新启动服务,可用内存就会开始减少,并且在 7 天内它会下降 95%,并且稍后会出现频繁的警告。

在此处输入图像描述 上图显示了 Y 轴上的可用内存,可以看到它减少了。上图中的所有峰值都用于重新启动服务。

当我通过 eclipse Mat 中的堆转储时,我看到以下内容:

在此处输入图像描述

可以看出,几乎所有空间仅由 1 个对象占用,即java.lang.ref.Finalizer,但是当我在项目中进行字段 Java 搜索时,我没有看到任何使用 finalize() 方法的代码。

我已经走到了死胡同,试图找到内存泄漏。是否有任何其他原因可能导致该问题。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
23 浏览

java - Eclipse MAT 报告仅列出前 10 个对象

我正在使用 MAT 分析我的堆并查看一些有用的报告。例如,此报告列出了空集合中可能的内存浪费。

MAT 版本:1.11.0

正如您从屏幕截图中看到的那样,报告中的每个项目仅列出所有对象的前 10 个。

在此处输入图像描述

如果我单击“...对象的前 10 个”,期望看到更多对象,实际上并非如此。我能看到的只有那 10 个对象。我看不到显示更多对象的方法,例如“显示下一个 10 个对象”按钮。请参阅下面的屏幕截图。

在此处输入图像描述

我正在寻找一种查看所有 365 个对象的方法。某处有这样的按钮吗?或者我必须为此编写 OQL?我真的是 OQL 的新手,有人能给我举个例子吗?感谢任何帮助!

注意: ThreadLocalMap 仅用于说明和更好的屏幕截图,我实际上是在寻找空的 HashMap 的来源。