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

目录
打赏
0
0
0
0
81
分享
相关文章
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
166 3
SpringBoot入门 - 添加内存数据库H2
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
647 166
SpringBoot项目打war包流程
本文介绍了将Spring Boot项目改造为WAR包并部署到外部Tomcat服务器的步骤。主要内容包括:1) 修改pom.xml中的打包方式为WAR;2) 排除Spring Boot内置的Tomcat依赖;3) 添加Servlet API依赖;4) 改造启动类以支持WAR部署;5) 打包和部署。通过这些步骤,可以轻松地将Spring Boot应用转换为适合外部Tomcat服务器的WAR包。
174 64
SpringBoot项目打war包流程
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
|
16天前
|
Linux系统内存使用优化技巧
交换空间(Swap)的优化 禁用 Swap sudo swapoff -a 作用:这个命令会禁用系统中所有的 Swap 空间。swapoff 命令用于关闭 Swap 空间,-a 参数表示关闭 /etc/fstab 文件中配置的所有 Swap 空间。 使用场景:在高性能应用场景下,比如数据库服务器或高性能计算服务器,禁用 Swap 可以减少磁盘 I/O,提高系统性能。
34 3
SpringBoot项目打包成war包
通过上述步骤,我们成功地将一个Spring Boot应用打包成WAR文件,并部署到外部的Tomcat服务器中。这种方式适用于需要与传统Servlet容器集成的场景。
40 8
|
2月前
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
166 36
SpringBoot start.aliyun.com创建项目,解决properties乱码的问题
通过确保文件和开发环境的编码一致,配置 Maven 编码,设置 Spring Boot 应用和嵌入式服务器的编码,可以有效解决 properties 文件的乱码问题。以上步骤可以帮助开发者确保在 Spring Boot 项目中正确处理和显示多语言字符,避免因编码问题导致的乱码现象。
51 5
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
185 20
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
103 31
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等