Я пытаюсь настроить использование памяти Java-приложением внутри Docker-контейнера.Я использую Java отслеживание памяти.Мой вопрос заключается в том, должен ли я сосредоточиться только на общем выделенном объеме памяти или мне также нужно заботиться об общем зарезервированном объеме памяти?
Когда мой предел памяти докера составляет 1500 МБ, а объем кучи составляет примерно% 35 от этого, то nmt выглядит следующим образом:
Total: reserved=2226606KB, committed=873262KB
- Java Heap (reserved=538624KB, committed=447488KB)
(mmap: reserved=538624KB, committed=447488KB)
- Class (reserved=1168642KB, committed=139334KB)
(classes #23623)
(malloc=3330KB #33812)
(mmap: reserved=1165312KB, committed=136004KB)
- Thread (reserved=90735KB, committed=90735KB)
(thread #89)
(stack: reserved=90346KB, committed=90346KB)
(malloc=286KB #446)
(arena=103KB #174)
- Code (reserved=253962KB, committed=25490KB)
(malloc=4362KB #8491)
(mmap: reserved=249600KB, committed=21128KB)
- GC (reserved=62693KB, committed=59317KB)
(malloc=9937KB #105744)
(mmap: reserved=52756KB, committed=49380KB)
- Compiler (reserved=234KB, committed=234KB)
(malloc=103KB #1032)
(arena=131KB #5)
- Internal (reserved=72800KB, committed=72800KB)
(malloc=72768KB #32496)
(mmap: reserved=32KB, committed=32KB)
- Symbol (reserved=30254KB, committed=30254KB)
(malloc=27529KB #291934)
(arena=2725KB #1)
- Native Memory Tracking (reserved=7432KB, committed=7432KB)
(malloc=18KB #219)
(tracking overhead=7413KB)
- Arena Chunk (reserved=178KB, committed=178KB)
(malloc=178KB)
- Unknown (reserved=1052KB, committed=0KB)
(mmap: reserved=1052KB, committed=0KB)
/ #
В этом случае для динамической памяти 450 МБ / 550 МБ Java использует фактически 870 МБ памяти, и, как я понимаю, 2,2 ГБ - это максимальное потенциальное использование памяти.На этом этапе, я должен попытаться увеличить память докера для потенциальных проблем oom или посмотреть на общий выделенный объем памяти 870 МБ, я должен предположить, что я в безопасности?