0

在 Linux 服务器上,已为应用程序指定了 vm 参数(Xmx=3GB,Xms=3GB)。通过查看堆转储可以看出已使用超过 2.9 GB 的内存。32 MB 内存用于无法访问的对象。

但是应用程序没有抛出 OOM,而是停止响应。因此有必要手动重新启动应用程序。

我可以看到许多线程(96)等待堆栈跟踪中某个特定对象的监视器。这有帮助吗?此外,2.9 GB 的大部分空间都被缓存对象占用,我认为这很正常。MAT 仅将这些缓存对象显示为泄漏嫌疑人。

试图通过查看堆转储和堆栈跟踪来找出导致它没有响应但没有看到任何特别之处的原因。

4

2 回答 2

1

您的应用程序存在内存泄漏。试着找到它,有像VisualVM这样的好工具。

于 2012-11-22T10:19:17.683 回答
0

通常,在 OOM 应用程序之前非常缓慢。

在您的情况下,您应该通过示例使用 VisualVM 分析您的应用程序。

于 2012-11-22T10:23:43.980 回答