为什么我的Java应用程序的驻留集大小(RSS)比堆占用大得多?

时间:2015-08-19 06:14:24

标签: java memory-management

这是一个spring boot web应用程序,当访问峰值到达时,RSS会增加,然后堆缩小(每分钟调用System.gc())但RSS仍然很大:

$ top | grep 8544  8544 userA 20 0 9290m 2.3g 9548 S 0.3 2.4 470:02.80 java

虽然堆只有 160M 显示为jmap。

检查/ proc / 8544 / smaps时,我发现:



00601000-006ce000 rw-p 00000000 00:00 0                                  [heap]
Size:                820 kB
Rss:                 748 kB
Pss:                 748 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:       748 kB
Referenced:          748 kB
Anonymous:           748 kB
AnonHugePages:         0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
760000000-78aaa0000 rw-p 00000000 00:00 0 
Size:             699008 kB
Rss:              699008 kB
Pss:              699008 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:    699008 kB
Referenced:       699008 kB
Anonymous:        699008 kB
AnonHugePages:         0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
78aaa0000-7e0000000 rw-p 00000000 00:00 0 
Size:            1398144 kB
Rss:             1398140 kB
Pss:             1398140 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:   1398140 kB
Referenced:      1398140 kB
Anonymous:       1398140 kB
AnonHugePages:         0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB




进程中大约有300个线程,堆栈帧大小为1M。 但是RSS和真正使用的内存之间的差距仍然太大。 所以请帮助建议这里可能发生的事情,或者我如何找到更多提示。

谢谢!

0 个答案:

没有答案