JVM调优

本文详细介绍了JVM的各种参数,包括查看默认值的方法、不同类型的参数如标配参数、X参数和XX参数的使用。重点讲解了XX参数中的Boolean类型和KV设置类型,并给出了实际案例,如查看GC收集细节、设置元空间大小等。同时,列举了常用的JVM配置参数,如-Xms、-Xmx、-XX:MetaspaceSize等,并展示了GC日志的详细信息,探讨了新生代、老年代的比例和垃圾的最大年龄设置。

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

根据自己工程实践中的经验,总结了一些基础的jvm参数相关的使用。

一. 请问如何盘点查看JVM系统默认值?
  1. 参数的类型

     (1)标配参数
     	java -version 
     	java -help
     	java -showversion
    
     (2)X参数(了解)
     	-Xint 解释执行
     	-Xcomp 第一次使用就编译成本地代码
     	-Xmixed 混合模式
    

IDEA中设置参数

	(3)XX参数  (重点!!!)
		XX参数,又分两种,一种是Boolean类型,一种是设置值类型(key-value)。
	
		Boolean类型
			公式: -XX:+/-某个属性值
					  + 表示开启
					  - 表示关闭

		    案例:是否打印GC收集细节

				  如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?或者具体值是多少?
				  第一步:jps -l
				  第二步:jinfo -flage PrintGCDetails pid

			      是否使用串行垃圾收集器
			      第一步:jps -l
				  第二步:jinfo -flage UseSerialGC pid

在这里插入图片描述
在这里插入图片描述

		KV设置类型
			公式:-XX:属性key=属性值value
			案例:-XX:MetaspaceSize=128m
			  	  -XX:MaxTenuringThreashold=15

		特殊:
		-Xms1024m==> -XX:InitialHeapSize=1024m  默认为物理内存的1/16
		-Xmx2048m==> -XX:MaxHeapSize=2048m 		默认为物理内存的1/4

	
	小结:
		第一种,查看参数盘点家底
			jps -l //获得进程号
			jinfo -flag  具体参数 java进程编号
			jinfo -flags         java进程编号

		第二种,查看参数盘点家底
			-XX:+PrintFlagsInitial 主要查看初始默认值: java -XX:+PrintFlagsInitial -version 或者 java -XX:+PrintFlagsInitial

在这里插入图片描述

			-XX:+PrintFlagsFinal 主要查看经过修改的值: java -XX:+PrintFlagsFinal -version 或者 java -XX:+PrintFlagsFinal  【注意】 =默认, :=修改过

在这里插入图片描述

			运行java命令的同时打印出参数  java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m T(运行的java的类名)

			-XX:+PrintCommandLineFlags 重点查看默认垃圾收集器

在这里插入图片描述

二、 你平时工作用过的JVM常用基本配置参数有哪些?
  1. 常用参数:

     -Xms 初始大小内存,默认为物理内存的1/64   			等价于-XX:InitialHeapSize
     
     -Xmx 最大分配内存,默认为物理内存的1/4    			等价于-XX:MaxHeapSize
     
     -Xss 设置单个线程栈的大小,一般默认为512k-1024k    等价于-XX:ThreadStackSize  (官网: This option is similar to -XX:ThreadStackSize)
     
     -Xmn 设置年轻代大小,默认即可。
    
     -XX:MetaspaceSize  元空间和永久代相似,都是JVM规范中方法区的实现。区别在于,元空间并不在虚拟机中,而是只用本地内存。因此默认情况下,元空间的大小仅受本地内存限制。
     
     实践:
     	-Xms10m -Xmx40m -XX:MetaspaceSize=1024m -XX:+PrintFlagsFinal
     	-Xms10m -Xmx40m -Xss1024k  -XX:MetaspaceSize=1024m -XX:+PrintFlagsFinal -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UserSerialGC
     
     -XX:+PrintGCDetials
    

在这里插入图片描述

	GC日志的详细信息:
	[GC (Allocation Failure) [DefNew: 1134K->320K(3072K), 0.0009534 secs][Tenured: 245K->564K(6848K), 0.0009817 secs] 1134K->564K(9920K), [Metaspace: 221K->221K(4480K)], 0.0019739 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] 

在这里插入图片描述

	[Full GC (Allocation Failure) [Tenured: 564K->549K(6848K), 0.0008397 secs] 564K->549K(9920K), [Metaspace: 221K->221K(4480K)], 0.0008536 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 


	-XX:SurvivorRatio		设置新生代中eden和s0/s1空间的比例,默认是:-XX:SurvivorRatio=8, Eden:S0:S1=8:1:1

在这里插入图片描述

	-XX:NewRatio
	
	-XX:MaxTenuringThreshold	设置垃圾的最大年龄,0-15,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值