0


SpringBoot 项目启动内存占用过高优化以及内存查看

一、问题描述

在使用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 的值大。说明没有内存溢出。

标签: spring boot java jvm

本文转载自: https://blog.csdn.net/jcmj123456/article/details/129025734
版权归原作者 风水道人 所有, 如有侵权,请联系我们删除。

“SpringBoot 项目启动内存占用过高优化以及内存查看”的评论:

还没有评论