Как сопоставить значение Memory.usage_in_bytes и итоговый вывод выделенной памяти jcmdnative_memoryJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как сопоставить значение Memory.usage_in_bytes и итоговый вывод выделенной памяти jcmdnative_memory

Сообщение Anonymous »

Я запускаю контейнер на основе Java (Java 17) в модуле k8s. Я пытался сопоставить значение выделенной памяти в «сводке jcmd VM.native_memory» и /sys/fs/cgroup/memory/memory.usage_in_bytes. В моем случае значение Memory.usage_in_bytes было намного выше, чем значение выделенной памяти.
Это результат, когда я перешел в контейнер Java и выполнил приведенную выше команду.

Код: Выделить всё

cat memory.usage_in_bytes
1597472768
Это результат сводки jcmd VM.native_memory

Код: Выделить всё

Native Memory Tracking:

(Omitting categories weighting less than 1KB)

Total: reserved=2421348KB, committed=857660KB
malloc: 220704KB #1170153
mmap:   reserved=2200644KB, committed=636956KB

-                 Java Heap (reserved=1048576KB, committed=310272KB)
(mmap: reserved=1048576KB, committed=310272KB)

-                     Class (reserved=429465KB, committed=22169KB)
(classes #28001)
(  instance classes #25930, array classes #2071)
(malloc=3481KB #84541) (peak=3492KB #84609)
(mmap: reserved=425984KB, committed=18688KB)
(  Metadata:   )
(    reserved=196608KB, committed=143744KB)
(    used=143182KB)
(    waste=562KB =0.39%)
(  Class space:)
(    reserved=425984KB, committed=18688KB)
(    used=18130KB)
(    waste=558KB =2.99%)

-                    Thread (reserved=194088KB, committed=21036KB)
(thread #189)
(stack: reserved=193536KB, committed=20484KB)
(malloc=332KB #1141) (peak=446KB #1499)
(arena=221KB #377) (peak=10159KB #375)

-                      Code (reserved=256175KB, committed=97051KB)
(malloc=8487KB #29662) (peak=8487KB #29663)
(mmap: reserved=247688KB, committed=88564KB)

-                        GC (reserved=86756KB, committed=59472KB)
(malloc=14936KB #63333) (peak=24980KB #64612)
(mmap: reserved=71820KB, committed=44536KB)

-                  Compiler (reserved=2203KB, committed=2203KB)
(malloc=2039KB #2836) (peak=2115KB #2754)
(arena=165KB #5) (peak=71495KB #13)

-                  Internal (reserved=3213KB, committed=3209KB)
(malloc=3173KB #61930) (peak=4858KB #69121)
(mmap: reserved=40KB, committed=36KB)

-                     Other (reserved=111934KB, committed=111934KB)
(malloc=111934KB #394) (peak=202035KB #385)

-                    Symbol (reserved=30725KB, committed=30725KB)
(malloc=29086KB #824945) (peak=29092KB #825086)
(arena=1638KB #1) (at peak)
-    Native Memory Tracking (reserved=18524KB, committed=18524KB)
(malloc=241KB #4280) (peak=243KB #4331)
(tracking overhead=18284KB)

-        Shared class space (reserved=16384KB, committed=10624KB)
(mmap: reserved=16384KB, committed=10624KB)

-               Arena Chunk (reserved=1939KB, committed=1939KB)
(malloc=1939KB #493) (peak=73642KB #2130)

-                   Tracing (reserved=15531KB, committed=15531KB)
(malloc=15499KB #206) (at peak)
(arena=32KB #1) (at peak)

-                    Module (reserved=957KB, committed=957KB)
(malloc=957KB #4764) (peak=967KB #4794)
-                 Safepoint (reserved=8KB, committed=8KB)
(mmap: reserved=8KB, committed=8KB)

-           Synchronization (reserved=162KB, committed=162KB)
(malloc=162KB #1705) (peak=206KB #1673)

-            Serviceability (reserved=1498KB, committed=1498KB)
(malloc=1498KB #21880) (peak=1689KB #21864)

-                 Metaspace (reserved=197412KB, committed=144548KB)
(malloc=804KB #742) (peak=807KB #753)
(mmap:  reserved=196608KB, committed=143744KB)
-      String Deduplication (reserved=5795KB, committed=5795KB)

-           Object Monitors (reserved=2KB, committed=2KB)
(malloc=2KB #9) (peak=1252KB #6163)
Вопрос:
Общий объем выделенной памяти от jcmd составляет 857660 КБ. Я пытаюсь понять, какая часть процесса Java использует 1 597 472 768 (memory.usage_in_bytes) - 857 660 000 байт.
Другие подробности:
Вывод VM.flags:

Код: Выделить всё

-XX:CICompilerCount=2
-XX:CompressedClassSpaceSize=436207616
-XX:ConcGCThreads=1
-XX:+FlightRecorder
-XX:G1ConcRefinementThreads=2
-XX:G1EagerReclaimRemSetThreshold=8
-XX:G1HeapRegionSize=1048576
-XX:G1PeriodicGCInterval=10000
-XX:GCDrainStackTargetSize=64
-XX:InitialHeapSize=33554432
-XX:+ManagementServer
-XX:MarkStackSize=4194304
-XX:MaxHeapFreeRatio=10
-XX:MaxHeapSize=1073741824
-XX:MaxMetaspaceSize=536870912
-XX:MaxNewSize=643825664
-XX:MaxRAM=2147483648
-XX:MaxRAMPercentage=50.000000
-XX:MetaspaceSize=16777216
-XX:MinHeapDeltaBytes=1048576
-XX:MinHeapFreeRatio=5
-XX:MinHeapSize=8388608
-XX:NativeMemoryTracking=summary
-XX:NonNMethodCodeHeapSize=5826188
-XX:NonProfiledCodeHeapSize=122916026
-XX:-OmitStackTraceInFastThrow
-XX:+PrintNMTStatistics
-XX:ProfiledCodeHeapSize=122916026
-XX:ReservedCodeCacheSize=251658240
-XX:+SegmentedCodeCache
-XX:SoftMaxHeapSize=1073741824
-XX:-THPStackMitigation
-XX:ThreadStackSize=1024
-XX:+UnlockDiagnosticVMOptions
-XX:+UseAdaptiveSizePolicy
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:+UseFastUnorderedTimeStamps
-XX:+UseG1GC
-XX:+UseStringDeduplication
Я использую клиентскую библиотеку Redisson для связи с Redis.
https://openjdk.org/jeps/346 – я наткнулся на это и понял, что это исправлено в самой Java 12.
Поскольку мы используем клиент Redisson, я понимаю, что используется библиотека Netty, которая создает прямую память. Мне не удалось определить, сколько прямой памяти используется из вывода команды jcmd own_memory.

Подробнее здесь: https://stackoverflow.com/questions/793 ... summary-co
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»