这是一个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和真正使用的内存之间的差距仍然太大。 所以请帮助建议这里可能发生的事情,或者我如何找到更多提示。
谢谢!