java.lang.OutOfMemoryError - 解决方法 (-Xmx -Xms)

本文详细介绍了Java虚拟机(JVM)内存的堆区和非堆区参数配置,包括-Xms、-Xmx、-Xmn、-XX:PermSize和-XX:MaxPermSize等关键参数的作用和设置原则。通过实例展示了如何为SpringBoot应用分配4GB内存,并启用内存溢出错误时的堆转储,以辅助进行性能调优和故障排查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、常见的参数种类(配置内存)


(1)配置堆区的参数:-Xms、-Xmx、-Xmn、-XX:newSize、-XX:MaxnewSize

(2)配置非堆区的参数:-XX:PermSize、-XX:MaxPermSize

 

二、堆区参数配置


 (1)-Xms:Java虚拟机堆区内存初始内存分配的大小,按照实际情况进行分配(一般为操作系统可用内存的1/64大小)。

 (2)-Xmx:Java虚拟机堆区内存可被分配的最大上限(一般为操作系统可用内存的1/4大小)。

  -Xms、-Xmx两个参数会配置相同的值(优点:能够在Java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源)。


 (3)-XX:newSize: 新生代初始化内存的大小(注意:该值需要小于-Xms的值)。

 (4)-XX:MaxnewSize: 新生代可被分配的内存的最大上限(注意:该值需要小于-Xmx的值)。

 (5)-Xmn: 对-XX:newSize、-XX:MaxnewSize两个参数同时进行配置(注意:JDK1.4之后才有该参数)。

三、非堆区参数配置


(1)-XX:PermSize:非堆区初始化内存分配大小。

(2)-XX:MaxPermSize:非堆区分配的内存的最大上限。

启动springboot项目并分配内存 (分配4G内存)

java -jar -Duser.timezone=Asia/Shanghai -Xms4096m -Xmx4096m -Xmn256m -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./oom.hprof xxx.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stjl.xyz

谢谢打赏,祝老板心想事成

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值