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

相关推荐
yeccheng3 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
On The Road :2 天前
深入理解 JVM 垃圾回收:GC 是什么、如何判定垃圾、四大回收算法全解析
jvm·算法
Yves..3 天前
JVM 学习笔记:内存区域、类加载机制与垃圾回收
jvm
akinggw3 天前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
yh弓长3 天前
JVM 核心机制
jvm
tg_xianheyun4 天前
腾讯云国际账号注册代充值适合哪些海外业务场景?
jvm
yuniko-n4 天前
【JVM】对象内存布局
java·开发语言·jvm
wuminyu4 天前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
wuminyu5 天前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
骑着蜗牛撵大象3275 天前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm