jdk1.8
linux 16核 64G内存 xms xmx均设置为35G
遇到以下情况
代码中是使用了一定量的反射调用方法,但是虽说如此,jvm的垃圾回收也会回收啊,怎么就回收不了了,根据一些内存日志分析到,是老年代一直增长,没有及时回收,导致年轻代内存大小给了老年代一部分,又导致年轻代大小不够用,最终内存溢出。
配置35的堆内存干嘛,堆内存超过32G就不会指针压缩了,还不如配小点
一开始配置的是32G,也是同样的溢出,我就加大了点。还是这样子,
能帮我分析下吗?
@0o飞行天下o0: 内存不要大于32G,不然你需要分配40-50G才能有相同的效果,你可以分配31G试试
@yytxdy: 嗯,好的
已经调小了,但是还是不行,生成了一个1.5g的dump文件,但是没法上传
[GC (Allocation Failure) [PSYoungGen: 6835565K->56797K(6986240K)] 8650886K->1872126K(21322240K), 0.0564204 secs] [Times: user=0.22 sys=0.01, real=0.06 secs]
[GC (Allocation Failure) [PSYoungGen: 6869981K->105673K(6983168K)] 8685310K->1921010K(21319168K), 0.0576558 secs] [Times: user=0.32 sys=0.01, real=0.05 secs]
[GC (Allocation Failure) [PSYoungGen: 6924489K->31205K(6993408K)] 8739826K->1846550K(21329408K), 0.0593462 secs] [Times: user=0.22 sys=0.02, real=0.06 secs]
[GC (Allocation Failure) [PSYoungGen: 6850021K->70067K(7006208K)] 8665366K->1885428K(21342208K), 0.0646613 secs] [Times: user=0.25 sys=0.00, real=0.07 secs]
[GC (Allocation Failure) [PSYoungGen: 6910387K->160K(7002112K)] 8725748K->1815528K(21338112K), 0.0313504 secs] [Times: user=0.05 sys=0.00, real=0.04 secs]
[GC (Allocation Failure) [PSYoungGen: 6840480K->128K(7011840K)] 8655848K->1815512K(21347840K), 0.0234036 secs] [Times: user=0.05 sys=0.01, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 6852224K->38782K(7008256K)] 8667608K->1854175K(21344256K), 0.0566079 secs] [Times: user=0.24 sys=0.02, real=0.06 secs]
[GC (Allocation Failure) [PSYoungGen: 6890878K->13455K(7028224K)] 8706271K->1828856K(21364224K), 0.0437225 secs] [Times: user=0.13 sys=0.01, real=0.05 secs]
这种现象正常吗?帮忙看看吧,年轻代回收很频繁。
这是什么神仙项目,用到这么大的内存。内存加到这个程度还内存溢出,应该是代码问题吧
应该是代码的问题,但是不知道怎么定位到是哪里导致的?感觉是老年代的对象没有被回收