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

简介: 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 的值大。说明没有内存溢出。

相关文章
|
24天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
43 4
SpringBoot入门(4) - 添加内存数据库H2
|
19天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
56 1
SpringBoot获取项目文件的绝对路径和相对路径
|
13天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
35 6
|
10天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
21 2
|
14天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
36 8
|
19天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
59 13
|
14天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
33 4
|
13天前
|
监控 安全 程序员
如何使用内存池池来优化应用程序性能
如何使用内存池池来优化应用程序性能
|
13天前
|
存储 监控 Java
深入理解计算机内存管理:优化策略与实践
深入理解计算机内存管理:优化策略与实践
|
19天前
|
缓存 监控 Java