开发经验(三):堆栈内存设置Xms、Xmx、Permsize、MaxPermsize

本文介绍了Java程序运行时的内存结构,重点讲解了堆栈内存参数Xms、Xmx、Permsize、MaxPermsize的含义与设置技巧。在开发环境中,建议设置较小的-Xms以节省资源;而在生产环境中,为保证稳定性,通常使-Xms和-Xmx保持一致。

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

一、概念扫盲

弄明白Xms、Xmx、Permsize、MaxPermsize这几个名词的设置,就不得不先弄明白Java程序运行过程中的使用的内存是何物?如果我们把服务器(或者个人开发计算机)的物理内存比作一个大圆圈,如图:

image-20210901191216385

  • 蓝色部分为Java虚拟机未使用的物理内存,一般JVM内存的最大值与当前操作系统有很大关系,32位操作系统处理器的话,JVM的限制最大只有4G,如果操作系统为64位处理器的话,则没有这个限制。

  • 绿色部分为JVM使用内存中的非堆内存,有一种说法叫栈内存,存放基本类型数据存储,具有明确的生命周期,符合后进先出的原则,超出当前变量使用域后,进行销毁栈内存的使用,回收容量。还有一种说法,这部分包括两部分:静态存储区和栈存储两部分,静态存储策略主要存放具有定量周期的类对象变量。

  • 黄色部分为堆内存,应用运行过程中,存储new的对象实例以及引用类型数据,默认初始化大小为物理内存的1/64,最大容量为物理内容的1/4,默认空余堆内存小于40%的时候,JVM就会增大堆内存的容量直到设置的-Xmx的最大限制,超出之后就会报内存溢出。

    PS:

    如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

出家二少

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值