Java进程内存组成

2024-02-05  本文已影响0人  王侦

1.组成部分


Java内存分为两部分:

2.jcmd命令

[xxxxx xxx@xxxx-001:/data/br/xxx/xxxx]$ jcmd 1 VM.native_memory summary
1:

Native Memory Tracking:

Total: reserved=4119234KB, committed=2609862KB
-                 Java Heap (reserved=2097152KB, committed=1776640KB)
                            (mmap: reserved=2097152KB, committed=1776640KB) 
 
-                     Class (reserved=1196169KB, committed=165257KB)
                            (classes #25502)
                            (malloc=4233KB #56812) 
                            (mmap: reserved=1191936KB, committed=161024KB) 
 
-                    Thread (reserved=266542KB, committed=266542KB)
                            (thread #260)
                            (stack: reserved=265384KB, committed=265384KB)
                            (malloc=853KB #1302) 
                            (arena=305KB #519)
 
-                      Code (reserved=272911KB, committed=130951KB)
                            (malloc=23311KB #26777) 
                            (mmap: reserved=249600KB, committed=107640KB) 
 
-                        GC (reserved=134686KB, committed=122798KB)
                            (malloc=24094KB #68976) 
                            (mmap: reserved=110592KB, committed=98704KB) 
 
-                  Compiler (reserved=1063KB, committed=1063KB)
                            (malloc=932KB #2433) 
                            (arena=131KB #3)
 
-                  Internal (reserved=104282KB, committed=104278KB)
                            (malloc=104246KB #141164) 
                            (mmap: reserved=36KB, committed=32KB) 
 
-                    Symbol (reserved=32574KB, committed=32574KB)
                            (malloc=30105KB #311251) 
                            (arena=2469KB #1)
 
-    Native Memory Tracking (reserved=9564KB, committed=9564KB)
                            (malloc=37KB #417) 
                            (tracking overhead=9527KB)
 
-               Arena Chunk (reserved=195KB, committed=195KB)
                            (malloc=195KB) 
 
-                   Unknown (reserved=4096KB, committed=0KB)
                            (mmap: reserved=4096KB, committed=0KB) 

内存占用方式含义:

各组成部分的介绍:

不能仅通过 Native Memory Tracking 的数据就判断 JVM 占用的内存,因为JVM 通过 mmap 分配的大量内存都是先 reserve 再 commit 之后实际往里面写入数据的时候,才会真正分配物理内存。同时,JVM 还会动态释放一些内存,这些内存可能不会立刻被操作系统回收。Native Memory Tracking 是 JVM 认为自己向操作系统申请的内存,与实际操作系统分配的内存是有所差距的,所以不能只查看 Native Memory Tracking 去判断,我们还需要查看能体现真正内存占用指标。这里可以查看 linux 进程监控文件 smaps_rollup 看出具体的内存占用。

参考

上一篇 下一篇

猜你喜欢

热点阅读