JVM常用参数

来源:互联网 发布:js 字符串base64编码 编辑:程序博客网 时间:2024/06/06 13:19

JVM常用参数

调试跟踪参数配置

  • -XX:+PrintGC打印GC日志
  • -XX:+PrintGCDetailsGC时的详细堆信息
  • -XX:+PrintHeapAtGC打印GC前后的堆信息
  • -XX:+PrintGCTimeStamps输出GC发生时间,输出的时间为虚拟机启动的偏移量
  • -XX:+PrintGCApplicationConcurrentTime输出应用程序执行时间
  • -XX:+PrintGCApplicationStoppedTime输出应用程序由于GC产生停顿的时间
  • -XX:+PrintRefrenceGC 输出软引用、弱引用、虚引用和Finalize队列
  • -XX:+HeapDumpOnOutOfMemoryError产生OOM时可以在内存溢出时导出整个堆信息
  • -XX:HeapDumpPath导出堆文件存放路径
  • -XX:+TraceClassLoading跟踪类加载信息
  • -XX:+TraceClassUnloading跟踪类卸载信息
  • -XX:PrintClassHitogram查看系统中的类的分布情况(占用空间最多、实例数量空间大小)
  • -XX:+PrintVMOptions打印虚拟机接收到的命令行显示参数
  • -XX:+PrintCommandLineFlags打印虚拟机的显式和隐式参数
  • -XX:+PrintFlagsFinal打印虚拟机的所有系统参数

堆内存参数配置

  • -Xms10g -Xmx20G 可用内存
  • -Xmn3g新生代大小,一般设置为堆空间的1/3 1/4左右,新生代大则老年代小
  • -XX:SurvivorRatio设置新生代eden空间和from/to空间的比例关系,关系(eden/from=eden/to)
  • -XX:NewRatio设置新生代和老年代的比例老年代/新生代

非堆内存参数配置

  • -XX:PermSize 永久区大小,jdk8中移除
  • -XX:MaxMetaspaceSize永久区最大可用值,jdk8中可用,如果不设置则使用系统内存
  • -Xss 栈配置
  • -XX:MaxDirectMemorySize,最大直接内存,跳过Java堆,如不设置默认值为最大堆空间
  • JVM运行模式 -server启动慢,启动之后速度快,适用于长期运行的程序; -client适用于运行时间不常的程序,如GUI

GC参数配置

与串行收集器相关的参数

  • -XX:+UseSerialGC 新生代、老年代使用串行收集器
  • -XX:SurvivorRatio 设置eden区和survivor区大小的比例
  • -XX:PretenureSizeThreshold,当对象大小超过此值时,直接分配到老年代
  • -XX:MaxTenuringThreshold 设置对象进入老年代的最大年龄

与并行相关的参数

  • -XX:+UseParNewGC 新生代使用并行收集器
  • -XX:+UseParallelOldGC 老年代使用并行回收收集器
  • -XX:+ParallelGCThreads设置垃圾回收线程数,一般最好与CPU数量相当,默认情况下,当CPU数量小于8个时,ParallelGCThreads的值相当于CPU数量,当CPU数量大于8个时,ParallelGCThreads的值等于3+((5*CPU_COUNT)/8
  • -XX:MaxGCPauseMillis设置最大垃圾收集停顿时间
  • -XX:GCTimeRatio 设置吞吐量大小,它的值是一个0~100之间的整数,假设值为n,那么系统将花费不超过1/(1+n)的时间用于垃圾收集
  • -XX:+UseAdaptiveSizePolicy打开自适应GC策略,JVM对新生代的大小、eden和survivior的比例、晋升老年代对象年龄等参数自动调整

与CMS回收器相关的参数

  • -XX:+UseConcMarkSweepGC 启用CMS
  • -XX:ParallelCMSThreads设置CMS线程数量
  • -XX:CMSInitiatingOccupancyFraction默认68当老年代的空间超过68%时会执行一次CMS回收
  • -XX:UseCMSCompactAtFullCollection设置CMS结束后是否需要进行一次内存空间整理
  • -XX:CMSFullGCsBeforeCompaction进行多少次CMS后进行内存空间压缩
  • -XX:+CMSClassUnloadingEnabled 允许对类元数据区进行回收
  • -XX:CMSInitiatingPermOccupancyFraction当永久区占用率达到此值时进行CMS回收(须激活CMSClassUnloadingEnabled)
  • -XX:UseCMSInitiatingOccupancyOnly只要达到阈值时进行CMS回收

与G1回收器相关的参数

  • -XX:+UseG1GC 使用G1
  • -XX:MaxGCPauseMillis最大垃圾收集停顿时间
  • -XX:GCPauseIntervalMillis最大停顿间隔时间

TLAB相关

  • -XX:UseTLAB开启TLAB分配
  • -XX:+PrintTLAB 打印TLAB相关分配信息
  • -XX:TLABSize设置TLAB的大小
  • -XX:+ResizeTLAB自动调整TLAB的大小

其他相关

  • -XX:+DisableExplicitGC禁用显示GCSystem.gc()
  • -XX:+ExplicitGCInvokesCOncurrent使用并发方式处理GC
原创粉丝点击