My java process uses 1,8g memory, but Xmx (768m) and metaspace together only add up to ~1,3g:
- What is the missing 0,5g being used for?
- Is there a way to have influence over this amount?
I have tried using 2 different vms (eclipse jre17-temurin and amazon jdk17-corretto) and both seem to behave the same
root@012c846e6fdd:/usr/local/tomcat# jattach 40 jcmd "VM.native_memory"
Connected to remote JVM
JVM response code = 0
Native Memory Tracking:
(Omitting categories weighting less than 1KB)
Total: reserved=2567596KB, committed=1284664KB
malloc: 113456KB #1462750
mmap: reserved=2454140KB, committed=1171208KB
- Java Heap (reserved=786432KB, committed=760832KB)
(mmap: reserved=786432KB, committed=760832KB)
- Class (reserved=1052664KB, committed=29688KB)
(classes #37343)
( instance classes #34992, array classes #2351)
(malloc=4088KB #91969)
(mmap: reserved=1048576KB, committed=25600KB)
( Metadata: )
( reserved=212992KB, committed=210880KB)
( used=210351KB)
( waste=529KB =0.25%)
( Class space:)
( reserved=1048576KB, committed=25600KB)
( used=25027KB)
( waste=573KB =2.24%)
- Thread (reserved=84198KB, committed=7938KB)
(thread #82)
(stack: reserved=83968KB, committed=7708KB)
(malloc=135KB #497)
(arena=95KB #163)
- Code (reserved=255546KB, committed=102094KB)
(malloc=7858KB #29903)
(mmap: reserved=247688KB, committed=94236KB)
- GC (reserved=85611KB, committed=84679KB)
(malloc=23459KB #61207)
(mmap: reserved=62152KB, committed=61220KB)
- Compiler (reserved=693KB, committed=693KB)
(malloc=529KB #3360)
(arena=165KB #5)
- Internal (reserved=4293KB, committed=4293KB)
(malloc=4257KB #40522)
(mmap: reserved=36KB, committed=36KB)
- Other (reserved=4453KB, committed=4453KB)
(malloc=4453KB #44)
- Symbol (reserved=43130KB, committed=43130KB)
(malloc=41076KB #1227006)
(arena=2054KB #1)
- Native Memory Tracking (reserved=22878KB, committed=22878KB)
(malloc=22KB #334)
(tracking overhead=22855KB)
- Shared class space (reserved=12288KB, committed=10688KB)
(mmap: reserved=12288KB, committed=10688KB)
- Arena Chunk (reserved=199KB, committed=199KB)
(malloc=199KB)
- Tracing (reserved=32KB, committed=32KB)
(arena=32KB #1)
- Module (reserved=979KB, committed=979KB)
(malloc=979KB #5196)
- Safepoint (reserved=8KB, committed=8KB)
(mmap: reserved=8KB, committed=8KB)
- Synchronization (reserved=136KB, committed=136KB)
(malloc=136KB #1454)
- Serviceability (reserved=1KB, committed=1KB)
(malloc=1KB #12)
- Metaspace (reserved=214005KB, committed=211893KB)
(malloc=1013KB #741)
(mmap: reserved=212992KB, committed=210880KB)
- String Deduplication (reserved=1KB, committed=1KB)
(malloc=1KB #8)
- Object Monitors (reserved=48KB, committed=48KB)
(malloc=48KB #237)
I expected the total memory usage of the java process to be the same as the summary of the VM.native_memory and maybe a little bit extra for the jvm, but 500m seems excessive.