Я исследую проблемы нехватки памяти с Java-приложением, запущенным в докер-контейнере, организованном mesos marathon.
- контейнер установлен на 2 ГБ памяти
- Куча JVM явно установлена на 1 ГБ мин. И 1,5 ГБ макс.
- постоянная рабочая нагрузка, а затем возможный код выхода из контейнера 137 (OOM).
- сравнил два javacores в начале теста и через 1 час заметил, что что-то под названием JIT "Other" имеет наибольшую дельту
- проблем с использованием кучи JVM не обнаружено
Первый
2MEMUSER +--JIT: 318,789,520 bytes / 778 allocations
2MEMUSER | |
3MEMUSER | +--JIT Code Cache: 268,435,456 bytes / 1 allocation
2MEMUSER | |
3MEMUSER | +--JIT Data Cache: 16,777,728 bytes / 8 allocations
2MEMUSER | |
3MEMUSER | +--Other: 33,576,336 bytes / 769 allocations
через 1 час
2MEMUSER +--JIT: 525,843,728 bytes / 8046 allocations
2MEMUSER | |
3MEMUSER | +--JIT Code Cache: 268,435,456 bytes / 1 allocation
2MEMUSER | |
3MEMUSER | +--JIT Data Cache: 62,916,480 bytes / 30 allocations
2MEMUSER | |
3MEMUSER | +--Other: 194,491,792 bytes / 8015 allocations
Я хотел знать, может ли дамп ядра с помощью Eclipse Memory Analyzer Tool (MAT) пролить свет на то, что находится в этом «другом» пространстве.
Мы попытались ограничить использование памяти JIT, следуя этому обсуждению
*-Xjit:disableCodeCacheConsolidation
-Xcodecachetotal128m*
но не могу заставить работать аргументы.
Мы используем
IBM JRE 1.8.0 Linux amd64-64 (сборка 8.0.5.17 - pxa6480sr5fp17-20180627_01 (SR5 FP17))
Может, кто-нибудь поделится инструментами / опытом устранения неполадок, связанных с использованием памяти JIT?