JVM调优

本文围绕JVM调优与参数配置展开,介绍了JVM的参数类型,包括标配、x、xx参数;说明了查看JVM参数的两种方法;还列举了常用参数,如-Xms、-Xmx等,以及部分参数的默认值和配置示例,如设置新生代比例、垃圾最大年龄等。

JVM调优与参数配置

一、JVM的参数类型
a)标配参数(了解)
例:-version; -help; java -showversion
b)x参数(了解)
例:-Xint -解释执行;
-Xcomp -第一次使用就编译成本地代码
-Xmixed -混合模式
c)xx参数(重点)
分为:
1.Boolean类型
公式:-xx:+或者-mouge 属性值(’+‘表示开启,’-'表示关闭)
例:设置参数
查看刚刚设置过的参数
2.KV(键值对)设值类型
公式:-xx:属性值key=属性值value
设置参数
查看刚刚设置过的参数
注:-Xms等价y于-xx:InitialHeapSize(初始位默认物理内存的1/64);-Xmx等价于-xx:MaxHeapSize(初始位默认物理内存的1/4)

二、查看JVM参数(盘点家底)
1)第一种,查看参数,盘点家底
首先,通过’jps -l’ 查看当前进程编号
查看进程编号
然后得知当前进程号为18960,然后通过’jinfo -flag ‘具体参数’ 'java进程编号’进行查看,或者通过’jinfo -flags ‘java进程编号’'进行模糊查询(注:查询后‘Non-default VM flags’为JVM默认参数(不曾改变),‘Command line’为用户自己修改过的参数)
查看参数
2)第二种,查看参数,盘点家底
‘java -XX:+PrintFlagsInitial’(主要查看初始默认参数)
该图片只是截取了一部分结果
‘java -XX:+PrintFlagsFinal -version’(主要查看修改更新过的参数)
![该图片只是截取了一部分结果]](https://img-blog.csdnimg.cn/20190506102207438.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NyYXp5X2xhbGE=,size_16,color_FFFFFF,t_70)
注:以上截图结果中有‘=’、‘:=’,这两种区别是:‘=’为JVM默认值,‘:=’为JVM加载修改过(例如InitialHeapSize、MaxheapSize)或人为修改过的值。
‘java -XX:+PrintCommandLineFlag’(查看命令行参数,该命令查看GC类型较为方便)
查询结果
附:通过程序查看‘-Xms’和‘-Xmx’

        long totalMemory = Runtime.getRuntime().totalMemory();// 返回Java虚拟机中的内存总量。
        long maxMemory = Runtime.getRuntime().maxMemory();// 返回Java虚拟机试图使用的最大内存量。
        System.out.println("Total_Memory(-Xms) = " + totalMemory + "(字节)、" + (totalMemory/(double)1024/1024) + "MB");
        System.out.println("Max_Memory(-Xmx) = " + maxMemory + "(字节)、" + (maxMemory/(double)1024/1024) + "MB");

三、常用参数
-Xms
初始大小内存,默认为物理内存的1/64,等价于 -XX:InitialHeapSize
-Xmx
最大分配内存,默认为物理内存的1/4,等价于 -XX:MaxHeapSize
-Xss
设置单个线程栈的大小,一般默认为512k-1024k,等价于-XX:ThreadStackSize
(注:若为‘0’表示为默认值,不为‘0’表示为人为修改后的值,如下图)

根据oracle javase官方文档设置前查询结果设置为128k
设置后查询结果
***-Xmn ***
设置年轻代大小(一般选默认,不做调整,默认年轻代占堆内存的1/3,老年代占2/3)
-XX:MetaspaceSize
设置元空间大小。
例(常用参数的配置):(-Xms128m -Xmx4096m -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC)。

*** -XX:+PrintGCDetails***
例:
设置参数

 public static void main(String[] args) {
        byte[] b = new byte[1024*1024*50];// 人为模拟将堆内存撑爆,强制进行垃圾回收,打印垃圾回收细节
        }

结果显示
GC垃圾回收参数解读:
GC垃圾回收参数解读
Full GC 垃圾回收参数解读:
Full GC 垃圾回收参数解读
-XX:SurvivorRatio
设置新生代中eden和S0/S1空间的比例,默认:-XX:SurvivorRatio=8,Eden:S0:S1=8:1:1;假如:-XX:SurvivorRatio=4,Eden:S0:S1=4:1:1(须在-XX:+UseSerialGC模式下才生效),SurvivorRatio值就是设置Eden区的比例是多少,S0/S1相同。
-XX:NewRatio
配置年轻代与老年代在堆结构的占比,默认:-XX:NewRatio=2新生代占1,老年代占2,年轻代占整个堆的1/3;假如:-XX:NewRatio=4新生代占1,老年代占4,年轻代占整个堆的1/5;NewRatio值就是设置老年代的占比,剩下的1给新生代。
-XX:MaxTenuringThreshold
设置垃圾最大年龄(Java8后限制只能设置为0-15之间)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值