java - 分析内存不足错误的堆转储

标签 java hibernate memory memory-leaks

我正在尝试使用 OOME 的堆转储来分析问题,为此我使用了 MAT。 我阅读了如何使用 MAT here .

这是一个部署在tomcat服务器上,使用spring和hibernate的web应用。当我看到转储的支配树时,我只能看到 hibernate 对象,这是否意味着内存泄漏是由于我的 hibernate 在内存中持有对象,或者我在这里遗漏了什么?

下面是支配树的截图。 enter image description here

最佳答案

从您上传的图片我们不能得出内存泄漏的结论,显示的对象是内存泄漏的原因。

基本上,如果一个对象没有被任何其他对象引用,它就会被 JVM 收集为垃圾。内存泄漏是指一个对象在逻辑上不再有用但由于内存中另一个对象不需要的引用而留在内存中的情况。

如果您正在尝试测试应用程序中的内存泄漏,您所要做的就是识别每次访问应用程序时在堆中累积的对象。有效地识别对象的先取和初始堆。然后在您的应用程序中执行一些操作。然后离开应用程序,以便 GC 发生,然后进行堆转储。该工具提供了一个选项来比较堆转储,这将识别从基本堆转储中急剧增加的对象。然后您可以深入对象以确定谁持有该对象的引用。

关于java - 分析内存不足错误的堆转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32045691/

相关文章:

java - Spring JPA 锁

java - 如何使用 Spring 和 Hibernate 调用具有两个参数的存储过程

python - 使用 Numpy 加载文本时出现内存错误

.net - .NET 可达到的最大内存?

java - 在字符串中搜索 * 并通过任何内容替换它

java - 在一个公共(public)方法中使用相同的私有(private)方法

java - Hibernate 逆向工程未生成正确的域代码 STS

c++ - 如何使用 Boost 内存映射在 C++ 中解析 CSV?

java - cassandra有全文检索API吗?

java - Gson - 关于版本控制的问题