Отслеживание собственной памяти Java, следует ли мне заботиться о зарезервированной памяти? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь настроить использование памяти 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 МБ, я должен предположить, что я в безопасности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...