4、常用JVM参数配置

主要分为三个方面:
前面都有-需要注意!!!
1、跟踪(Trace)参数配置

  • -XX:+printGC 打印GC的简要信息
    比如
    在这里插入图片描述

  • -XX:+PrintGCDetails 打印GC的详细信息
    在这里插入图片描述

  • -XX:+PrintGCTimeStamps 打印CG发生的时间戳
    -在这里插入图片描述

  • -Xloggc:log/gc.log 指定GC log的位置,以文件输出,帮助开发人员分析问题

  • -XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息
    在这里插入图片描述

  • -XX:+TraceClassLoading 监控类的加载
    在这里插入图片描述
    2、堆空间参数配置(重点!)

  • -Xmx –Xms 指定最大堆和最小堆
    在这里插入图片描述

  • -Xmn(设置的是新生代的绝对值大小)
    设置新生代大小,设置的是绝对值,设置多少兆就是多少兆

  • -XX:NewRatio(设置的是新生代和老年代的比值)
    新生代(eden+2*s)和老年代(不包含永久区)的比值
    4 表示 新生代:老年代=1:4,即年轻代占堆的1/5

  • -XX:SurvivorRatio(设置的两个S区的eden区的比值)
    设置两个Survivor区和eden的比
    两个Sur区又叫做S1和S0,或者from和to区
    8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10

在这里插入图片描述
在这里插入图片描述
其余的
-XX:+HeapDumpOnOutOfMemoryError
OOM时导出堆到文件
-XX:+HeapDumpPath
导出OOM的路径
举个例子:

-Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump
Vector v=new Vector();
for(int i=0;i<25;i++)
v.add(new byte[110241024]);
在这里插入图片描述

也可以在发生OOM时候执行某个脚本
在这里插入图片描述

总结:

  1. 根据实际事情调整新生代和幸存代的大小
  2. 官方推荐新生代占堆的3/8
  3. 幸存代占新生代的1/10
  4. 在OOM时,记得Dump出堆,确保可以排查现场问题

3、永久区的分配
-XX:PermSize -XX:MaxPermSize
设置永久区的初始空间和最大空间
他们表示,一个系统可以容纳多少个类型
在这里插入图片描述
在这里插入图片描述
3、栈空间参数配置

-Xss
通常只有几百K
决定了函数调用的深度
每个线程都有独立的栈空间
局部变量、参数 分配在栈上

测试:

-Xss 128K
将Xss分配的多一些也可以提升调用的深度,当前和之前的一样,我们也可以减少局部变量
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值