So korrelieren Sie den Wert von „memory.usage_in_bytes“ und die zugesicherte Speicherausgabe von „native_memory“ von jcmJava

Java-Forum
Anonymous
 So korrelieren Sie den Wert von „memory.usage_in_bytes“ und die zugesicherte Speicherausgabe von „native_memory“ von jcm

Post by Anonymous »

Ich verwende einen Java-basierten (Java 17) Container im k8s-Pod. Ich habe versucht, den Wert des zugesicherten Speichers in „jcmd VM.native_memory summary“ und /sys/fs/cgroup/memory/memory.usage_in_bytes zu korrelieren. In meinem Fall war der Wert von „memory.usage_in_bytes“ viel höher als der Wert des zugesicherten Speichers.
Dies ist die Ausgabe, als ich in den Java-Container ausgeführt und den obigen Befehl ausgeführt habe.
cat memory.usage_in_bytes
1597472768

Dies ist die Ausgabe der jcmd VM.native_memory-Zusammenfassung
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)

Frage:
Der gesamte zugesicherte Speicher von jcmd beträgt 857660 KB. Ich versuche zu verstehen, welcher Teil des Java-Prozesses 1.597.472.768 (memory.usage_in_bytes) – 857.660.000 Bytes verbraucht.
Weitere Details:
VM.flags-Ausgabe ist:
-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

Ich verwende die Redisson-Clientbibliothek, um mit Redis zu kommunizieren.
https://openjdk.org/jeps/346 – Ich bin darauf gestoßen und Ich habe verstanden, dass dies in Java 12 selbst behoben ist.
Da wir den Redisson-Client verwenden, verstehe ich, dass die Netty-Bibliothek verwendet wird, die direkten Speicher nutzt. Ich konnte in der Befehlsausgabe von jcmd native_memory nicht herausfinden, wie viel direkter Speicher verwendet wird.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post