学习是一个逐步发现自己无知的过程!

JAVA JVM启动参数

-XX:+UseG1GC -Xms6000M -Xmx6000M

- G1垃圾收集器。
- 属于分代收集器。
- JDK7+,长远目标时代替CMS收集器。
- 并行的、并发的和增量式压缩短暂停顿的垃圾收集器。
- 缩短处理超大堆时产生的停顿。
- 相对于CMS的优势而言是内存碎片的产生率大大降低。
- G1收集器和其他的收集器运行方式不一样,不区分年轻代和年老代.它把堆空间划分为多个大小相等的区域,当进行垃圾收集时,它会优先收集存活对象较少的区域。
- 采用Remembered Set来避免全堆扫描。

-Xms JVM初始分配的堆内存
-Xmx JVM最大允许分配的堆内存

-XX:NewRatio=2

- 默认情况下 -Xmn是没有值的,根据NewRatio的值来确定年轻代的大小。
- NewRatio默认值是2,也就是年轻代占堆的三分之一。

-XX:G1HeapRegionSize=8M

- 设置G1区域的大小。
- 值一般是2的幂,范围是1MB到32MB之间。

-XX:MetaspaceSize=256M

- 代替PermSize,元空间初始值
- 也就是-XX:PermSize JVM初使分配的非堆内存。

-XX:MaxMetaspaceSize=256M

- 代替MaxPermSize,元空间最大值
- 也就是-XX:MaxPermSize JVM初使分配的非堆内存。
  • 在JVM中堆之外的内存称为非堆内存(Non-heap memory)。
  • Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。

-XX:MaxTenuringThreshold=10

  • 可以自动调节对象晋升(Promote)到老年代阈值的GC中,设置该阈值的最大值。
  • 当一个对象在新生代中经历过Minor GC之后对象的年龄就+1,原来0岁此时就变为1了,依次累加。
  • 这里是一个极其理想的情况,但是实际它是可能自动调节的,可能年龄到了2还没达到我们设定的10也将其对象晋升到老年代了.

-XX:InitiatingHeapOccupancyPercent=45

  • 当堆内存占用备份比达到预设值则会触发(Concurrent Marking Cycle Phases)标记一次GC
  • 启动堆占用百分比=45 启动并发 GC 周期的(整个)堆占用百分比。G1 使用它来触发基于整个堆(而不仅仅是一代)的占用情况的并发 GC 循环。值 0 表示“执行恒定的 GC 循环”。默认值为 45(即 45% 已满或已占用)。

-XX:MaxGCPauseMillis=200

设置每次GC最大停顿时间为200ms
  • VM将调整Java堆大小和其他与GC相关的参数,以使GC引起的暂停时间短于nnn毫秒,尽可能地保证内存回收花费时间不超过设定值。

-verbose:gc

  • 打印虚拟机中GC的详细情况:显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。

-XX:+PrintGCDetails

  • Java GC日志可以通过 +PrintGCDetails开启。

-XX:+PrintGCTimeStamps

  • 有一点必须注意:PrintGC必须开启,只开启PrintGCDetails、PrintGCTimeStamps不会输出GC,必须PrintGC同时开启。

-XX:+PrintReferenceGC

  • 输出GC参考值。

-XX:+PrintAdaptiveSizePolicy

  • 参考gc,ergo标签决定日志级别。

-XX:+UseGCLogFileRotation

  • 启动GC日志文件的自动转储。

-XX:NumberOfGCLogFiles=6

  • GC日志文件的循环数目。

-XX:GCLogFileSize=32m

  • 控制GC日志文件的大小。

-Xloggc:/opt/gc.log

  • 指定GC日志文件目录。

-XX:+HeapDumpOnOutOfMemoryError

  • 当首次遭遇OOM时导出此时堆中相关信息。

-XX:HeapDumpPath=/opt/heap-dump.hprof.log

  • 指定导出堆信息的路径或文件名。

-Dfile.encoding=UTF-8

  • 设置文件流编码。

-jar xxx-cloud-service-xxx-exec.jar

  • 启动的jar包。
赞(0)
未经允许不得转载:劉大帥 » JAVA JVM启动参数

你的评论可能会一针见血! 抢沙发

登录

找回密码

注册