JVM常用虚拟机参数

0 概述

java 虚拟机有很多参数可以让我们去根据自己实际场景去设置,往往不同参数对系统性能也影响较大,本文主要介绍jvm常用的参数。

1 jvm 参数种类

  • -     (如-server)标准参数,所有的jvm都应该支持
  • -X    (如-Xms4g)非标准,每个jvm实现方式可能不同
  • -XX     (如 -XX:PermSize=96m)不稳定参数,下一个版本可能会取消
    可以使用java -XX:+PrintFlagsInitial查询默认的虚拟机参数。

2 常见的堆相关设置

整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

  • -Xms 设置初始 Java 堆大小,如设置初始为4g,-Xms4g
  • -Xmx 设置最大的java堆大小,如设置最大堆大小为4g,-Xmx4g
    在生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
  • -Xmn 设置年轻代大小,如设置年轻代大小为2g,-Xmn2g
    -Xmn 和 -XX:Newsize 区别,前者是设置堆中新生代大小。后者是设置新生代初始大小-Xmn 是将NewSize与MaxNewSize设为一致。
  • -XX:SurvivorRatio=10 设置年轻代Eden区和Survivor区(注意有两个)的比值,这里10 表示Eden:Survivor1:Survivor2=10:1:1
  • -XX:PermSize=96m -XX:MaxPermSize=256m 设置永久区初始大小为96M,最大为256M
  • -XX:+HeapDumpOnOutOfMemoryError 让JVM在发生内存溢出时自动的生成堆内存快照
  • XX:HeapDumpPath=/home/hsc/log/java.hprof 设置内存快照的路径

3 收集器设置

  • -XX:+UseSerialGC 使用Serial收集器(串行收集器)
  • -XX:+UseParallelGC 使用Parallel收集器(并行收集器)
  • -XX:+UseConcMarkSweepGC 使用CMS 收集器(设置并发收集器)

4 垃圾回收统计信息

  • -verbose:gc 输出GC的详细信息。
  • -Xloggc:/home/hsc/log/gc.log 将 GC 状态记录在文件中 (带时间戳)
  • XX:+PrintGCDetails 打印出GC的详细信息
  • -XX:+PrintGCDateStamps GC发生的时间信息

你可能感兴趣的:(jvm)