默认配置大小_42、JVM参数配置汇总

01

JVM配置官方文档

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

02

运行时数据区 — 虚拟机栈

  1. -Xss256k:设置虚拟机栈大小

03

运行时数据区 — 堆

  1. -XX:+PrintFlagsInitial:查看所有参数的默认初始值

  2. -XX:+PrintFlagsFinal:查看所有参数的最终值(可能会存在修改、不再是初始值)

  • 具体查看某个参数的指令:①jps:查看当前运行中的进程;②jinfo -flag SurvivorRatio 进程ID

-Xms:初始堆空间内存(默认为物理内存的 1/64)

-Xmx:最大堆空间内存(默认为物理内存的 1/4)

-Xmn:设置新生代的大小。(初始值及最大值,通常不用这个配置)

-XX:NewRatio:配置新生代与老年代在堆结构中的占比,默认是2。如配置-XX:NewRatio=3:新生代占堆内存的1/4,老年代占3/4

-XX:SurvivorRatio:设置新生代中Eden和S0/S1空间的比例

-XX:MaxTenuringThreshold:设置新生代垃圾最大年龄

-XX:PrintGCDetails:输出详细的GC处理日志

-XX:PrintGC:打印GC简要信息

-verbose:gc:打印GC简要信息

-XX:HandlePromotionFailure:是否设置空间分配担保。JDK7及以后此参数已经没什么影响了,可以看做-XX:HandlePromotionFailure=true

04

运行时数据区 — 方法区

  1. JDK7及以前:

  • -XX:PermSize:设置永久代初始分配空间。默认值是20.75M

  • -XX:MaxPermSize:设置永久代最大可分配空间。32位及其默认是64M,64位及其默认是82M

JDK8及以后:

  • -XX:MetaspaceSize

  • -XX:MaxMetaspaceSize

  • 元数据区大小默认值依赖于平台。Windows下,"-XX:MetaspaceSize"默认是21M。"-XX:MaxMetaspaceSize"默认值是-1,就是最大值无限制,一般不会限制元空间最大值,因为元空间使用本地内存

05

逃逸分析

  1. -XX:+DoEscapeAnalysis:显示开始逃逸分析

  2. -XX:+PrintEscapeAnalysis:查看逃逸分析分筛选结果

  3. -XX:+EliminateAllocations:标量替换参数设置,开启了标量替换(默认打开),允许将对象打散分配在栈上。

05

设置StringTable

  1. -XX:StringTableSize:可以设置 StringTable 的长度

05

垃圾回收器

  1. -XX:+PrintCommandLineFlags:查看命令行相关参数(包含使用的垃圾收集器)

  2. -XX:UseSerialGC:指定年轻代和老年代都是用串行收集器。等价于新生代使用 Serial,老年代使用Serial Old

  3. 使用ParNew垃圾收集器:

  • -XX:UseParNewGC:表明新生代使用 ParNew 垃圾收集器

  • -XX:ParallelGCThreads:限制线程数量,默认开启和CPU数据相同的线程数

使用CMS垃圾收集器

  • -XX:_UseConcMarkSweepGC:手动指定使用CMS收集器执行内存回收任务

    • 开启该参数后会自动将 -XX:UseParNewGC 打开。即:ParNew(Young区用)+CMS(Old区用)+Serial Old的组合

  • -XX:CMSInitiatingOccupanyFraction:设置堆内存使用率的阈值,一旦达到阈值,就开始进行回收

  • JDK 5 及以前默认值是 68,即当老年代空间使用率达到 68%时会触发CMS回收。JDK6及以后默认值是92

  • 如果内存增长较慢,可以设置一个较大的值,大的阈值可以降低CMS触发频率,减少回收次数,改善程序性能。如果内存增长很快,就应该设置一个较小的值,降低阈值,以免触发Serial Old回收器。此参数可以有效降低Full GC次数。

  • -XX:+UseCMSCompactAtFullCollection:用于指定在Full GC之后对内存空间进行压缩整理,以避免内存碎片的产生。不过由于内存压缩无法并发执行,所以STW时间会变长。此参数和 -XX:CMSFullGCsBeforeCompaction 配合使用

  • -XX:CMSFullGCsBeforeCompaction:设置在执行多少次Full GC之后进行内存空间的压缩整理

  • -XX:ParallelCMSThreads:设置CMS线程数量

  • 默认是 (ParallelGCThreads + 3)/ 4,ParallelGCThreads是年轻代并行收集器的线程数量。

使用 G1 垃圾收集器

  • -XX:+UseG1GC:手动指定使用G1收集器执行内存回收任务

  • -XX:G1HeapRegionSize:设置每个Region的大小。值是2的幂,范围是1MB到32MB之间,目标是根据最小的Java堆大小划分出约2048个区域。默认是堆内存的1/2000

  • -XX:MaxGCPauseMillis:设置期望达到的最大GC停顿时间指标(JVM会尽力实现,但不保证达到)。默认是200ms

  • -XX:ParallelGCThread:设置STW时GC线程数量。最多是8

  • -XX:ConcGCThreads:设置并发标记的线程数量。设置成ParallelGCThread的 1/4 左右

  • -XX:InitiatingHeapOccupancyPercent:设置出发并发GC周期的Java堆占用率阈值。超过此值,就出发GC,默认是45。

  • G1回收器常见操作步骤

  • 第一步:开启G1垃圾收集器

  • 第二步:设置堆的最大内存

  • 第三部:设置最大停顿时间

05

GC日志打印配置

  1. -XX:+PrintGC:输出GC日志。类似:-verbose:gc

  2. -XX:+PrintGCDetails:输出GC的详细日志

  3. -XX:+PrintGCTimeStamps:输出GC的时间戳(以基准时间的形式)

  4. -XX:+PrintGCDateStamps:输出GC的时间戳(以日期的形式,如:2013-05-04+21:23:59.234+0800)

  5. -XX:+PrintHeapAtGC:在进行GC的前后打印出堆的信息

  6. -Xloggc:../logs/gc.log:日志文件输出路径

e88d8a823604577745c59d620ffad332.png

扫码关注我

微信号|fancheng1995

c376590684fc5068514630c09c88099a.gif

你们点点“分享”,给我充点儿电吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值