java.lang.OutOfMemoryError:超出交换空间:使用GC日志进行分析

时间:2013-11-28 07:23:50

标签: java memory-management memory-leaks garbage-collection out-of-memory

我得到了

  

java.lang.OutOfMemoryError:为Chunk :: new请求了1136136个字节。没有交换空间?

     

内部错误(allocation.cpp:272),pid = 16889,tid = 150817680错误:Chunk :: new

在GC日志中:

990.772:[GC 990.772:[ParNew:172602K-> 15442K(176960K),0.0488380 secs] 493872K-> 340757K(2601792K),0.0492530 secs] [时间:用户= 0.18 sys = 0.05,实际= 0.05秒]

29074.961:[GC 29074.961:[ParNew:176960K-> 19648K(176960K),0.0442200 secs] 1022856K-> 872041K(2601792K),0.0445530 secs] [次:用户= 0.24 sys = 0.01,real = 0.05 secs ]

493872K达到1022856K

我的记忆选项是:

"-Xmx2560m -Xms2560m -XX:NewSize=192m -XX:MaxNewSize=192m -XX:+UseTLAB -XX:MaxPermSize=64m"

请帮忙

2 个答案:

答案 0 :(得分:0)

检查RAM中有多少可用/可用空间。很可能您的内存参数必须超出可用的RAM空间。适当减少内存配置。

答案 1 :(得分:0)

如果它不断增加那么肯定是内存泄漏。

  1. 进行堆转储 - jmap -dump:format=b,file=cheap.bin <pid>
  2. YourKit(免费试用)或VisualVM
  3. 中打开它
  4. 找到堆中最大的对象 - 那将是你的泄漏:)