JVM 性能调优参数

JVM分为堆内存和非堆内存

堆的内存分配用-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。而且,超过机器本身的内存大小也是不可以的,否则就等着机器变慢而不是程序变慢了。

相关推荐
2501_901006471 分钟前
如何用SQL统计每组的平均值同时显示原行_OVER子句
jvm·数据库·python
dfdfadffa1 分钟前
Python后端Flask如何实现短信验证码发送_调用云厂商API实现功能
jvm·数据库·python
m0_690825822 分钟前
Redis如何验证主从心跳健康_理解主库发送PING与从库回复REPLCONF ACK机制
jvm·数据库·python
阿正呀3 分钟前
C#怎么实现缓存功能 C#如何用MemoryCache和Redis实现数据缓存提升访问速度【架构】
jvm·数据库·python
m0_733565465 分钟前
如何在MongoDB中实现按时间跨度的分片路由_时间序列范围分片与冷热节点架构
jvm·数据库·python
woxihuan1234565 分钟前
SQL处理大规模分组聚合的内存限制_调整服务器配置
jvm·数据库·python
2401_833033626 分钟前
如何用 http 模块创建一个基础的 Web 服务器处理请求
jvm·数据库·python
CLX05051 小时前
golang如何实现群聊功能_golang群聊功能实现策略.txt
jvm·数据库·python
qq_4135020213 小时前
如何创建CDB公共用户_C##前缀强制规则与CONTAINER=ALL
jvm·数据库·python
yexuhgu14 小时前
CSS如何利用-checked实现纯CSS手风琴折叠_通过状态选择器控制区域高度
jvm·数据库·python