系列十一、你平时工作用过的JVM常用基本配置参数有哪些?

一、常用参数

1.1、-Xms

功能:初始内存大小,默认为物理内存的1/64,等价于 -XX:InitialHeapSize

1.2、-Xmx

功能:最大分配内存,默认为物理内存的1/4,等价于 -XX:MaxHeapSize

1.3、-Xss

功能:设置单个线程的大小,一般默认为512K~1024K,等价于 -XX:ThreadStackSize

1.4、-Xmn

功能:设置年轻代大小

1.5、-XX:MetaspaceSize

功能:设置元空间大小,例:-Xms10m -Xmx10m -XX:MetaspaceSize=1024m -XX:+PrintFlagsFinal

题外话:元空间的本质和永久代类似,都是JVM规范中方法区的实现,不过元空间与永久代最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此默认情况下,元空间的大小仅受本地内存限制。

1.6、-XX:+PrintGCDetails

功能:输出详细GC收集日志信息。

1.6.1、GC图解

1.6.2、FullGC图解

1.7、-XX:SurvivorRatio

功能:

设置新生代中eden区和s0、s1区空间的比例大小,默认情况下:-XX:SurvivorRatio=8 ===> eden:s0:s1=8:1:1,假如:-XX:SurvivorRatio=4 ===> eden:s0:s1=4:1:1,SurvivorRatiod的值就是设置eden区的比例占多少,s0和s1相同;

1.8、-XX:NewRatio

功能:

配置年轻代与老年代在堆结构中占比,默认情况下:-XX:NewRatio=2,新生代占1,老年代占2,年轻代占整个堆的1/3,老年代占整个堆的2/3,假如:-XX:NewRatio=4,新生代占1,老年代占4,年轻代占整个堆的1/5,老年代占整个堆的4/5,NewRatio的值就是设置老年代的占比,剩下的1给年轻代;

1.9、-XX:MaxTenuringThreshold

功能:设置垃圾的最大年龄。

语法: jinfo -flag MaxTenuringThreshold 进程编号,案例:

-XX:MaxTenuringThreshold=0,设置垃圾的最大年龄,如果设置为0的话,则年轻代对象将不会经过Survivor区,直接进入老年代,对于老年代比较多的应用,可以提高效率。如果将此值设置为一个较大值的话,则年轻对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代即被回收的概率。

1.10、典型设置案例

bash 复制代码
-Xms128m -Xmx4096m -Xss1024k -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
相关推荐
Lyyaoo.3 小时前
【JAVA基础面经】进程安全问题(synchronized and volatile)
java·开发语言·jvm
wgzrmlrm744 小时前
mysql如何配置全文索引停用词_mysql ft_stopword_file设置
jvm·数据库·python
heimeiyingwang4 小时前
【架构实战】JVM调优:GC日志分析与参数调优
jvm·架构
xcjbqd07 小时前
如何修改Oracle服务器默认的日期格式_NLS_DATE_FORMAT全局配置
jvm·数据库·python
xcjbqd08 小时前
SQL中视图能否嵌套存储过程_实现复杂自动化报表逻辑
jvm·数据库·python
l1t8 小时前
DeepSeek总结的PostgreSQL检查点和写入风暴
jvm·postgresql·oracle
摸鱼仙人~8 小时前
OpenCode 长期记忆系统内容整理
jvm
码以致用8 小时前
Java垃圾回收器笔记
java·jvm·笔记
wgzrmlrm7410 小时前
Django怎么优雅发送邮件_Python配置SMTP后端实现异步通知
jvm·数据库·python
凤山老林13 小时前
04-Java JDK, JRE和JVM
java·开发语言·jvm