JVM 性能调优参数

本文详细解释了JVM中的堆内存(包括-Xms,-Xmx)和非堆内存(-XX:PermSize,-XX:MaxPermSize)的分配原则,以及新生代堆和线程堆栈大小的设置。特别强调了内存抖动问题和合理配置的重要性。
摘要由CSDN通过智能技术生成

66b3136330af46bcb2b826d4e0fc9a92.jpgJVM分为堆内存和非堆内存

 

 

堆的内存分配用-Xms和-Xmx

 

-Xms分配堆最小内存,默认为物理内存的1/64;

 

-Xmx分配最大内存,默认为物理内存的1/4。

 

非堆内存分配用-XX:PermSize和-XX:MaxPermSize

 

-XX:PermSize分配非堆最小内存,默认为物理内存的1/64;

 

-XX:MaxPermSize分配最大内存,默认为物理内存的1/4。

 

线程堆和新生代堆分配

 

-Xmn:2g :设置新生代大小为2G。整个堆大小=新生代大小 + 年老代大小 + 持久代大小 。持久代一般固定大小为64m,所以增大新生代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

 

-Xss:128k :设置每个线程的堆栈大小。一般情况下256K是足够了,默认JDK1.4中是256K,JDK1.5+中是1M。影响了此进程中并发线程数大小。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

 

 

 

在很多情况下,-Xms和-Xmx设置成一样的。这么设置,是因为当Heap不够用时,会发生内存抖动,影响程序运行稳定性。

 

以上三个参数的设置都是默认以Byte为单位的,也可以在数字后面添加[k/K]或者[m/M]来表示KB或者MB。而且,超过机器本身的内存大小也是不可以的,否则就等着机器变慢而不是程序变慢了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值