在hs_err_pid ####。log文件中可以看到以下内容。 伊甸园空间和旧空间一样已满,但往返空间为0%
Heap:
PSYoungGen total 197,652K, used 190,955K [0x00000000eab00000, 0x00000000f8000000, 0x0000000100000000)
eden space 190,956K, 99% used [0x00000000eab00000,0x00000000f657fff8,0x00000000f6580000)
from space 6,646K, 0% used [0x00000000f7080000,0x00000000f7080000,0x00000000f7700000)
to space 11,364K, 0% used [0x00000000f6580000,0x00000000f6580000,0x00000000f7080000)
ParOldGen total 699,397K, used 699,341K [0x00000000c0000000, 0x00000000eab00000, 0x00000000eab00000)
object space 699,332K, 99% used [0x00000000c0000000,0x00000000eaaffff8,0x00000000eab00000)
Metaspace used 71522K, capacity 76253K, committed 129276K, reserved 1126500K
class space used 7619K, capacity 11188K, committed 52466K, reserved 1048576K
在处理大数组,哈希表或其他东西时会发生这种情况吗? 发生次要GC时,从/到空间太小而无法处理对象大小是否可能直接进入旧空间?
人们在看到这种行为时是否遇到过常见原因?
答案 0 :(得分:0)
我建议运行Eclipse MAT或类似工具,并检查哪个对象占用了内存。
我在Kafka遇到了类似的问题,这是由于与托管bean有关的内存泄漏。就我而言,豆子很小,但数量很多。
因此,只要JVM认为需要保持活动状态,不管对象的大小如何,您的Old gen都可以装满。