一、问题描述
在使用SpringBoot 开发过程中,发现不管是本地还是测试环境只要一启动,动不动就占用1G内存,然而本地和测试环境的访问量却并没有多少,导致资源浪费;
二、解决方案(亲测可用)
2.1、启动命令示例(具体配置可根实际情况调整)
nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xms128m -Xmx128m -Xmn32m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC ****.jar >/dev/null 2>&1&
2.2、命令参数详解
-XX:MetaspaceSize=128m:元空间默认大小
-XX:MaxMetaspaceSize=256m:元空间最大大小
-Xms128m:堆最大大小
-Xmx128m:堆默认大小
-Xmn32m:新生代大小
-Xss256k:栈最大深度大小
-XX:SurvivorRatio=8:新生代分区比例 8:2
-XX:+UseConcMarkSweepGC:指定使用的垃圾收集器,这里使用CMS收集器
-XX:+PrintGCDetails:打印详细的GC日志
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!
————————————————
查看内存使用情况
java -XX:+PrintCommandLineFlags -version
其中得出的max 内存除以1024,得到按兆为单位。
然后用glances,查看,
如果没有glances命令,用yum 安装一下,如果安装不到,更新一下repo的源和附加源。
默认java的一个进程占用内存总量的1/4,但根据我的实践,内存到25.5%的时候,并没有内存溢出,只是刚好到达了边界。待观察。之后涨到了25.6%
另外:
用top命令,查看res,快捷键M,以内存排序top,这里看到的res信息,没有比java -XX:+PrintCommandLineFlags -version 的值大。说明没有内存溢出。