Java GC年轻/旧版100%,但从0%起

时间:2018-11-15 19:07:08

标签: java garbage-collection

在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时,从/到空间太小而无法处理对象大小是否可能直接进入旧空间?

人们在看到这种行为时是否遇到过常见原因?

1 个答案:

答案 0 :(得分:0)

我建议运行Eclipse MAT或类似工具,并检查哪个对象占用了内存。

我在Kafka遇到了类似的问题,这是由于与托管bean有关的内存泄漏。就我而言,豆子很小,但数量很多。

因此,只要JVM认为需要保持活动状态,不管对象的大小如何,您的Old gen都可以装满。