Jvm正在使用的内存比本机内存跟踪所说的要多,我该如何定位额外的内存去向?

18 浏览
0 Comments

Jvm正在使用的内存比本机内存跟踪所说的要多,我该如何定位额外的内存去向?

我在我的Web服务器上运行着Jetty。我的当前JVM设置是:-Xmx4g -Xms2g,然而Jetty使用了更多的内存,我不知道这些额外的内存去了哪里。\nJetty总共使用了4.547g的内存:\n\"enter\n堆内存使用情况显示堆内存使用量为2.5g:\n

堆内存使用情况:
新生代(Eden + 1个幸存者空间):
   容量 = 483196928(460.8125MB)
   已用     = 277626712(264.76546478271484MB)
   空闲     = 205570216(196.04703521728516MB)
   使用率57.45622455612963%
Eden空间:
   容量 = 429522944(409.625MB)
   已用     = 251267840(239.627685546875MB)
   空闲     = 178255104(169.997314453125MB)
   使用率58.4992824038755%
From空间:
   容量 = 53673984(51.1875MB)
   已用     = 26358872(25.137779235839844MB)
   空闲     = 27315112(26.049720764160156MB)
   使用率49.109214624351345%
To空间:
   容量 = 53673984(51.1875MB)
   已用     = 0(0.0MB)
   空闲     = 53673984(51.1875MB)
   使用率0.0%
并发标记-清除代:
   容量 = 2166849536(2066.46875MB)
   已用     = 1317710872(1256.6670150756836MB)
   空闲     = 849138664(809.8017349243164MB)
   使用率60.81229222922842%

\n仍然缺少2g内存,然后我使用了原生内存追踪,它显示:\n

总计:已预留=5986478KB,已分配=3259678KB
-                 Java堆(已预留=4194304KB,已分配=2640352KB)
                            (mmap:已预留=4194304KB,已分配=2640352KB)
-                     类(已预留=1159154KB,已分配=122778KB)
                            (类数=18260)
                            (malloc=4082KB #62204)
                            (mmap:已预留=1155072KB,已分配=118696KB)
-                    线程(已预留=145568KB,已分配=145568KB)
                            (线程数=141)
                            (堆栈:已预留=143920KB,已分配=143920KB)
                            (malloc=461KB #707)
                            (arena=1187KB #280)
-                      代码(已预留=275048KB,已分配=143620KB)
                            (malloc=25448KB #30875)
                            (mmap:已预留=249600KB,已分配=118172KB)
-                        垃圾收集(已预留=25836KB,已分配=20792KB)
                            (malloc=11492KB #1615)
                            (mmap:已预留=14344KB,已分配=9300KB)
-                  编译器(已预留=583KB,已分配=583KB)
                            (malloc=453KB #769)
                            (arena=131KB #3)
-                  内部(已预留=76399KB,已分配=76399KB)
                            (malloc=76367KB #25878)
                            (mmap:已预留=32KB,已分配=32KB)
-                    符号(已预留=21603KB,已分配=21603KB)
                            (malloc=17791KB #201952)
                            (arena=3812KB #1)
-    原生内存追踪(已预留=5096KB,已分配=5096KB)
                            (malloc=22KB #261)
                            (追踪开销=5074KB)
-               Arena块(已预留=190KB,已分配=190KB)
                            (malloc=190KB)
-                   未知(已预留=82696KB,已分配=82696KB)
                            (mmap:已预留=82696KB,已分配=82696KB)

\n仍然没有解释内存去了哪里,有人能够说明一下如何找到这些缺失的内存吗?

0