- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经用 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 对象中,结果是这样的 (UnreachableObjects_EMA.JPG):
最后两张图我不是很明白
最后,我还有 Java VisualVM 的报告,其中我有这样的结果 (Heapdump_JVM.JPG):
根据这张图,除了 Integer 和 String 对象之外,HashMap 对象也是问题所在。 Hashmap 对象我认为是类发送到 jsp 文件的模型的对象,它从 JPA 对象(Hibernate 的对象)出发,所以问题可能是这样的,但我不知道如何解决它...
有人可以帮助我吗?有人知道我该如何解决?您还需要更多信息吗?
谢谢!
最佳答案
在查看 DominatorTree_Expanded 时,您似乎在重复创建 SessionFactory(内存中有 144 个)。这应该只在启动时创建一次,然后用于创建任意数量的 session 。
另请参阅我在下面关于正确使用 Hibernate Session 的评论。
您的 Hibernate session 应该是请求的本地 -- 并在请求结束时关闭。在 Controller 处理和 View (JSP) 呈现期间,您可以使用“OpenSessionInView”模式将 session 绑定(bind)到线程。
我怀疑,由于您要 OutOfMemory,所以您将 Hibernate Session 保留为您的 Controller 的“实例变量”——或者作为某个地方的静态变量。永远不要这样做。
由于 Web 请求可能是并发的,因此 Controller 不应将请求处理状态(例如 Hibernate Sessions 或可变变量)共享为实例变量。这会导致单独的请求和线程之间发生不必要的交互。
关于java - 由于 org.hibernate.internal.SessionFactoryImpl 可能导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823599/
IntentReceiver 正在泄漏 由于 onDetachedFromWindow 在某些情况下未被调用。 @Override protected void onDetachedFromWind
好吧,我很难追踪这个内存泄漏。运行此脚本时,我没有看到任何内存泄漏,但我的 objectalloc 正在攀升。 Instruments 指向 CGBitmapContextCreateImage >
我编写了一个测试代码来检查如何使用 Instrument(Leaks)。我创建了一个单一 View 应用程序,单击按钮后我加载了一个像这样的新 View ... - (IBAction)btn_clk
我正在使用这个简单的代码并观察单调增加的内存使用量。我正在使用这个小模块将内容转储到磁盘。我观察到它发生在 unicode 字符串上而不是整数上,我做错了什么吗? 当我这样做时: >>> from u
我有以下泄漏的代码。 Instruments 表示,泄漏的是 rssParser 对象。我“刷新”了 XML 提要,它运行了该 block 并且发生了泄漏...... 文件.h @interface
我在我编写的以下代码片段中发现了内存泄漏 NSFileManager *fileManager=[[NSFileManager alloc] init]; fileList=[[fileManager
因此,我正在开发HTML5 / javascript rts游戏。观察一直有几种声音在播放。因此,对我来说,是一段时间后声音听起来像是“崩溃”,并且此浏览器选项卡上的所有声音都停止了工作。我只能通过重
下面是我正在使用的一段代码及其输出。 my $handle; my $enterCount = Devel::Leak::NoteSV($handle); print "$date entry $en
在这篇关于 go-routines 泄漏的帖子之后,https://www.ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sende
我想知道为什么在执行 ./a.out 后随机得到以下结果。有什么想法我做错了吗?谢谢 http://img710.imageshack.us/img710/8708/trasht.png 最佳答案 正
我正在 Swift 中开发一个应用程序,在呈现捕获我放在一起的二维码的自定义 ViewController 后,我注意到出现了巨大的内存跳跃。 该代码本质上基于以下示例:http://www.appc
下面是我的 javascript 代码片段。它没有按预期运行,请帮我解决这个问题。 function getCurrentLocation() { console.log("insi
我们在生产环境中部署了 3 个代理 Kafka 0.10.1.0。有些应用程序嵌入了 Kafka Producer,它们将应用程序日志发送到某个主题。该主题有 10 个分区,复制因子为 3。 我们观察
我正在使用仪器来检测一些泄漏,但有一些泄漏我无法解决; NSMutableString *textedetails = [[NSMutableString alloc] init];
如果我使用性能工具测试我的代码 - 泄漏,它没有检测到任何泄漏。这是否意味着代码没有泄漏任何内存? 我有一个越狱的 iPhone,我可以监控可用内存。如果有人知道,那就是 SBSettings。我测试
我在从 AddressBook 中获取图像时遇到了很大的问题,下面我粘贴了我的代码。此 imageData 从未被释放,在我的 Allocations Instruments 上它看起来总是在内存中它
- (NSMutableArray *)getArrayValue:(NSArray *)array{ NSMutableArray *valueArray = [NSMutableArra
Instruments 工具说这是一个泄漏,有什么想法吗? 我在 for 循环结束时释放变量对象 在上述方法的开头,这就是我设置变量对象的方式,即自动释放; NSMutableArray *varia
我正在跟踪我的 iOS 应用程序的内存泄漏,我有一个奇怪的泄漏导致我的应用程序崩溃......负责的框架是:CGImageMergeXMPPropsWhithLegacyProps。在某些时候,我的应
我正在尝试使用 NSOperationQueue 在后台线程中执行一个方法,如下所示: NSOperationQueue *queue = [NSOperationQueue new]; NS
我是一名优秀的程序员,十分优秀!