【发布时间】:2014-05-25 18:33:13
【问题描述】:
我有一个方法可以访问数据库并将大量记录提取到内存中进行处理。在获取记录后开始处理之前,我收到以下日志消息。什么意思?
164575.034: [GC (Allocation Failure) 4937664K->3619624K(5602816K), 0.0338580 secs]
选项:
java.opts=-d64 -Xmx8g -XX:+PrintGCTimeStamps -verbose:gc -XX:MaxPermSize=512m -XX:+UseParallelGC -XX:+UseParallelOldGC
【问题讨论】:
-
看起来这意味着它由于分配失败而启动了 GC,即当前一代的空间不足。您使用的是哪个平台?
-
你的 JVM 参数是什么?
-
java.opts=-d64 -Xmx8g -XX:+PrintGCTimeStamps -verbose:gc -XX:MaxPermSize=512m -XX:+UseParallelGC -XX:+UseParallelOldGC
-
批量获取和处理记录有帮助吗?
-
此消息显示“分配失败”。不是“GC失败”。您的程序试图分配内存。这失败了,因为可用内存太少,所以垃圾收集器运行,并释放了一些内存。