我已经用Java制作了MVC webapp,但是当我每天运行一次它时,由于内存错误,它再次关闭。
这个错误是这样的:线程“http-apr-12136-exec-42”中的异常java.lang.OutOfMemoryError:Java堆空间
java.sql.SQLException: java.lang.OutOfMemoryError: Java 堆空间
我有带有崩溃统计信息的 hprof,其中具体是如何使用内存的。如果我使用 Eclipse Memory Analizer 打开 hprof,我会得到以下结果:
在 rar 中:https ://mega.co.nz/#!Ht41xJDJ!MooePBSv5yOYSNN5OuvF7Afn2rcN-KJ2tXGSsgqtsaI
或在文件夹中:https ://mega.co.nz/#F!6hJUyKbQ!D_Kb23E3KfAJqcd5EeAt0A
在概览报告中,我有这张图 (OverviewEMA.JPG):我不知道这张图在说什么……我不明白。
在第二个选项卡,默认报告中,我有这个图形(DefaulReport_EMA.JPG):它说问题可能是“org.hibernate.internal.SessionFactoryImpl”的一个实例。但我不知道如何解决该实例。
在下一个选项卡中。在支配树中,再次出现前一个实例,它使用大约 42MB 的内存(与显示第一张图相同)。图像是 DominatorTree_EMA.JPG
如果我展开第一个类(给出问题的类),我有这个图形(DominatorTreeExpanded_EMA.JPG):
在下一个选项卡中,在直方图中,图形是这样的 (Histogram_EMA.JPG):
在 Unreachable objects 中,结果是这样的(UnreachableObjects_EMA.JPG):
最后两张图我不太明白
最后,我还有 Java VisualVM 的报告,我有这个结果(Heapdump_JVM.JPG):
根据该图,除了 Integer 和 String 对象之外,HashMap 对象是问题所在。我认为的 Hashmap 对象是类发送到 jsp 文件的模型对象,它从 JPA 对象(Hibernate 的对象)开始,所以问题可能是这样,但我不知道如何解决它...
有人可以帮助我吗?有人知道我该如何解决吗?您需要更多信息吗?
谢谢!