Я получаю OutOfMemoryException
, хотя кажется, что в куче все еще остается достаточно места.
Мой собственный отчет логов - память VM использовала 22,28 ГБ из 48 Г
логов от -XX:+PrintGCDetails -XX:+PrintAdaptiveSizePolicy -XX:+UnlockDiagnosticVMOptions -XX:+G1PrintHeapRegions
похоже, согласны с тем, что используется только 25G из 48G
[Eden: 0.0B(2448.0M)->0.0B(2448.0M) Survivors: 0.0B->0.0B Heap: 24.9G(48.0G)->24.9G(48.0G)]
159.360: [G1Ergonomics (Heap Sizing) attempt heap expansion, reason: allocation request failed, allocation request: 48 bytes]
159.360: [G1Ergonomics (Heap Sizing) expand the heap, requested expansion amount: 16777216 bytes, attempted expansion amount: 16777216 bytes]
159.360: [G1Ergonomics (Heap Sizing) did not expand the heap, reason: heap already fully expanded]
Проблема, по-видимому, специфична для G1. При использовании алгоритма gc по умолчанию в Java 8 использование памяти становится намного ближе к порогу -mx48G
до выброса OutOfMemoryException
.
Я использую следующие параметры -XX:+UseG1GC -mx48G