3回复
ZGC-JDK17的内存占用问题
ZGC-JDK17的内存占用问题
背景
最近在尝试JDK升级,使用最近发布JDK17,垃圾收集器采用ZGC。系统采用CentOS7的8C16G服务器。应用基于SpringBoot-2.4.6开发构建运行。启动脚本参数如下:
jdk-17/bin/java -server -Xmx12G -Xms6G -Xss256k -XX:-ZUncommit -XX:+UseZGC -XX:ConcGCThreads=2 -XX:ZCollectionInterval=120 -XX:ZAllocationSpikeTolerance=5 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+DisableExplicitGC -XX:+PrintClassHistogram -Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/home/app/sxpservice2/logs/gc-%t.log:time,tid,tags:filecount=5,filesize=50m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/app/sxpservice2/temp/ -XX:OnOutOfMemoryError=/home/app/sxpservice2/bin/restart.sh -Dcom.sun.management.jmxremote.port=26666 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar /home/app/application.jar
现象
应用服务器在应用启动后,查看系统的内存能够看到shared、buff/cache这一栏显示的使用量为6.3G左右。当停止该应用后观察此两项的值恢复到指点的200-300M左右。经过几次的-Xms
参数调试基本可以确定和JVM有关。
通过vmstat
命令查看系统状态如下:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 9095468 0 6655660 0 0 18 4 3 3 1 0 98 0 0
通过top
命令查询结果(按照内存排序)如下:
KiB Mem : 16414692 total, 9094328 free, 664576 used, 6655788 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 9064984 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
85593 app 20 0 587.7g 2.4g 2.0g S 1.3 15.5 6:32.40 java
985 app 20 0 161992 2344 1584 R 0.7 0.0 0:00.15 top
512 root 20 0 0 0 0 S 0.3 0.0 22:26.56 xfsaild/dm-0
查阅了相关的资料并未能解释清楚这个现象。其实也并不能确定是否是一个问题。还望给位大佬给予解惑。感谢~
3102 阅读