【问题标题】:Allocation failure in JavaJava中的分配失败
【发布时间】: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失败”。您的程序试图分配内存。这失败了,因为可用内存太少,所以垃圾收集器运行,并释放了一些内存。

标签: java memory-management


【解决方案1】:

它基本上只是告诉你它必须运行 GC 来分配额外的内存,否则它不适合内存。所以这只是GC的一个原因。

【讨论】:

    猜你喜欢
    • 2015-04-05
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多