查看jvm内存状态的方式 -NMT证明jvm内存多样性

查看jvm内存状态的方式 
1 图形化工具,如Jconsole、VisualVM
2 指令 jps jmap -heap/dump jstack
3 gc日志
4 NMT

NMT详解
NMT特性可以用于展示jvm所有占用的内存使用,开启NMT并选择summary模式,-XX:NativeMemoryTracking=summary;
为了方便获取和对比 NMT 输出,选择在应用退出时打印 NMT 统计信息:
-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics

执行如下图:

Native Memory Tracking:

Total: reserved=2175MB, committed=682MB
-                 Java Heap (reserved=501MB, committed=463MB)
                            (mmap: reserved=501MB, committed=463MB)

-                     Class (reserved=1070MB, committed=50MB)
                            (classes #8801)
                            (  instance classes #8204, array classes #597)
                            (malloc=2MB #24660)
                            (mmap: reserved=1068MB, committed=49MB)
                            (  Metadata:   )
                            (    reserved=44MB, committed=43MB)
                            (    used=42MB)
                            (    free=1MB)
                            (    waste=0MB =0.00%)
                            (  Class space:)
                            (    reserved=1024MB, committed=6MB)
                            (    used=5MB)
                            (    free=0MB)
                            (    waste=0MB =0.00%)

-                    Thread (reserved=228MB, committed=27MB)
                            (thread #226)
                            (stack: reserved=227MB, committed=26MB)
                            (malloc=1MB #1139)

-                      Code (reserved=243MB, committed=17MB)
                            (malloc=1MB #5509)
                            (mmap: reserved=242MB, committed=16MB)

-                        GC (reserved=23MB, committed=15MB)
                            (malloc=8MB #11446)
                            (mmap: reserved=16MB, committed=7MB)

-                  Compiler (reserved=26MB, committed=26MB)
                            (malloc=2MB #1951)
                            (arena=24MB #13)

-                  Internal (reserved=5MB, committed=5MB)
                            (malloc=3MB #9745)
                            (mmap: reserved=2MB, committed=2MB)

-                     Other (reserved=2MB, committed=2MB)
                            (malloc=2MB #202)

-                    Symbol (reserved=10MB, committed=10MB)
                            (malloc=8MB #233939)
                            (arena=3MB #1)

-    Native Memory Tracking (reserved=5MB, committed=5MB)
                            (tracking overhead=5MB)

-               Arena Chunk (reserved=63MB, committed=63MB)
                            (malloc=63MB)

可以看到整个memory主要包含了Java Heap、Class、Thread、Code、GC、Compiler、Internal、Other、Symbol、Native Memory Tracking、Arena Chunk这几部分;其中reserved表示应用可用的内存大小,committed表示应用正在使用的内存大小

Java Heap部分表示heap内存目前占用了463MB;Class部分表示已经加载的classes个数为8801,其metadata占用了50MB;Thread部分表示目前有225个线程,占用了27MB;Code部分表示JIT生成的或者缓存的instructions占用了17MB;GC部分表示目前已经占用了15MB的内存空间用于帮助GC;Code部分表示compiler生成code的时候占用了26MB;Internal部分表示命令行解析、JVMTI等占用了5MB;Other部分表示尚未归类的占用了2MB;Symbol部分表示诸如string table及constant pool等symbol占用了10MB;Native Memory Tracking部分表示该功能自身占用了5MB;Arena Chunk部分表示arena chunk占用了63MB
一个arena表示使用malloc分配的一个memory chunk,这些chunks可以被其他subsystems做为临时内存使用,比如pre-thread的内存分配,它的内存释放是成bulk的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值