问题标签 [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 投票
3 回答
2630 浏览

java - Tomcat 在部署 WebSocket 应用程序后逐渐耗尽内存

我在 AWS 机器上运行 Tomcat 8.5.9,部署了 10 个不同的 WebSocket 应用程序,每个应用程序基本上都充当消息代理。https 连接器使用的是 Http11NioProtocol。我设置的唯一参数是 maxThreads=200 以及证书信息。

请求量不是很高。它从周一早上开始运行,经理状态如下:

最大线程数:200
当前线程数:38
当前线程忙:0
保持活动套接字数:1最长
处理时间:234 毫秒
处理时间:17.254 秒
请求数:33351
错误数:325
接收字节:0.00 MB
发送字节:34.07 MB

几天后,我注意到内存使用量继续增长。我必须大约每两周左右重新启动一次 Tomcat 服务,以防止出现 OutOfMemoryException。

我一直在使用 Eclipse MAT 进行堆转储和分析,它总是将 WsFrameServer 类作为问题嫌疑人。最近的转储显示以下内容:

由“java.net.URLClassLoader @ 0x6c0047c28”加载的“org.apache.tomcat.websocket.server.WsFrameServer”的5146个实例
占用了1383143200
(73.13%)字节。这些实例引用自
“java.util.concurrent.ConcurrentHashMap$Node[]”的一个实例

Dominator Tree 目前有 106,000 个条目,其中大部分是 WsFrameServer 类。

我做错了什么还是这是“正常的”?在 Tomcat 或连接器上是否有任何特定设置我应该设置以防止这种情况发生?

提前致谢。

编辑:我不确定这是否有帮助,但这是 VisualVM 监视器的样子:

VisualVM 监视器

0 投票
0 回答
341 浏览

java - 如何从 java 程序的树视图中查看对象的大小(类似于 eclipse mat)

我使用 Eclipse 内存分析器检索并打开了一个堆转储。

垫子中的序列化检票口页面

不幸的是,序列化检票口页面代表了很大一部分,我已经完成了右键单击 > 复制 > 将值保存到文件,将其保存在我的桌面上。

在此之后,我在我的应用程序中打开它并反序列化该对象。

使用 IDEA 的调试模式

目前,我只有关于对象计数的 Intellij IDEA 内存视图的提示。

我现在的问题是如何在树视图中查看我的反序列化对象以及 Eclipse 内存分析器中的内存分配(绝对数字或百分比)?

我可以将对象再次保存到堆转储中并在 Eclipse 内存分析器中查看吗?

0 投票
2 回答
1667 浏览

eclipse - 无法在 MAC 中运行 Eclipse MAT

当我从http://www.eclipse.org/mat/downloads.php安装 Eclipse MAT 时弹出的错误消息链接

我想分析堆转储,但安装时卡住了。有人可以帮忙吗?

安装 MAT 时记录消息

0 投票
0 回答
93 浏览

eclipse-mat - 泄漏嫌疑人报告未在 Eclipse MAT 上呈现

当我尝试为我的堆转储打开泄漏嫌疑人时,会在与堆转储文件相同的位置创建一个 zip 文件。但是,它不会在 MAT 上呈现(我使用的是 MAT 版本 1.7.0)。我已经单独解压缩了泄漏嫌疑人的 zip 文件并打开了其中的 html 文件以查看泄漏嫌疑人。关于如何使其自动在 MAT 上呈现的任何想法?

0 投票
0 回答
94 浏览

java - 如何禁用tomcat捕获日志?

我试图用 MAT 分析 java 堆内存转储。然后我发现 org.apache.tomcat.util.log.CaptureLog 对象从堆中占用了高内存。如何停止此操作或禁用 CaptureLog。 垫子截图

0 投票
1 回答
209 浏览

java - 线程堆栈通过 MAT OQL 归档

我知道我们可以从 MAT UI 获取线程详细信息和更多信息,但是有没有一种方法可以将这些堆栈(类似于线程转储)重定向到输出或运行任何 OQL 查询以获得相同的结果?

我们有相当大的 HeapDump(大约 16G),它显示了大约 500 个活动线程,并且通过 UI 遍历每个线程是一个乏味的过程。想知道是否有办法通过 MAT OQL 从堆转储中获取简化的线程转储。

谢谢

维斯瓦纳特

0 投票
1 回答
156 浏览

java - Eclipse MAT 的 ParseHeapDump 实用程序可以运行 OQL 吗?

通常我使用 Eclipse MAT GUI 在堆转储上运行OQL以提取数据。我只是想知道是否有任何方法可以使用 ParseHeapDump 实用程序运行任何 OQL?基本上,我想超越这四个标准报告并运行我自己的 OQL 来找出原因。

0 投票
1 回答
67 浏览

java - Mat Eclipse - 没有 GC 根的 Java 字节 2GB

我正在尝试调试 2GB 且似乎只包含空值的大字节对象。使用 Eclipse MAT 时找不到任何 GC 根。JVM 在 websphere 中运行 IBM J9。任何想法为什么 Eclipse MAT 没有显示任何 GC 根,无论是硬还是弱?

在此处输入图像描述

GC 的路径显示为对象本身:

在此处输入图像描述

0 投票
0 回答
396 浏览

java - 内存/堆转储中有大量重复字符串

我在服务器上使用 wildfly-9.0.1.Final。
分配的内存为 20 GB,带有 UseG1GC 和 UseStringDeduplication(具有默认阈值)标志。

我在服务器上遇到了高内存使用情况,为了进行故障排除,我收集了 heapdump。我使用 Eclipse MAT 进行 heapdumnp 分析。问题嫌疑人建议大量。String 和 StringBuilder 对象。当我运行 String: 按值分组时。我看到大量重复的字符串。问题嫌疑人


我已经检查了一些字符串和 GC 路径。看起来这个字符串是由 JVM/容器构造的。 是否有任何配置可以避免这些大数字。字符串对象,或者我可以进一步解决这个问题。

GC的路径

0 投票
1 回答
61 浏览

heap-dump - Eclipse MAT 线程属性

我将 Liferay 6.1.2 CE 应用程序部署到 Jboss EAP 6.4 我正在尝试在服务器被 OOM 崩溃后使用 Eclipse MAT 分析堆转储。

在支配树中,我看到几个占用大量内存的线程。 在此处输入图像描述

我的问题 parkBlocker 和其他 Treads 属性是什么意思?