jvm常见命令参数

498 阅读2分钟
  • -Xms :表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可
  • -Xmx: 表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。
  • -Xms:Java堆内存的大小
  • -Xmx:Java堆内存的最大大小
  • -Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了
  • -XX:PermSize:永久代大小
  • -XX:MaxPermSize:永久代最大大小
  • -Xss:每个线程的栈内存大小
  • -XX:InitialHeapSize”和“-XX:MaxHeapSize”就是初始堆大小和最大堆大小,
  • -XX:NewSize 初始新生代大小
  • -XX:MaxNewSize 最大新生代大小,
  • -XX:PretenureSizeThreshold=10485760 指定了大对象阈值是10MB。
  • -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5 就是在5次Full GC之后会触发一次Compaction操作,也就是压缩操作,这个操作会把存活对象放到紧邻在一起,避免大量的内存碎片,设置为0。则每次Full GC后都整理一下内存碎片
  • -XX:+CMSParallelInitialMarkEnabled 这个参数会在CMS垃圾回收器的“初始标记”阶段开启多线程并发执行。
  • -XX:+CMSScavengeBeforeRemark 这个参数会在CMS的重新标记阶段之前,先尽量执行一次Young GC。
  • -XX:CMSInitiatingOccupancyFraction=68 老年代有68%空间占满了就会触发CMS的GC 一般设置为92
  • -XX:+DisableExplicitGC。这个参数的意思就是禁止显式执行GC,不允许你来通过代码触发GC。
  • -XX:+PrintGCDetils:打印详细的gc日志
  • -XX:+PrintGCTimeStamps:这个参数可以打印出来每次GC发生的时间
  • -Xloggc:gc.log:这个参数可以设置将gc日志写入一个磁盘文件
  • -XX:+HeapDumpOnOutOfMemoryError 该配置会把快照保存在用户目录或者tomcat目录下,也可以通过
  • -XX:HeapDumpPath=/tmp/heapdump.hprof 来显示指定路径

此外,OnOutOfMemoryError参数允许用户指定当出现oom时,指定某个脚本来完成一些动作。

  • -XX:+HeapDumpOnOutOfMemoryError
  • -XX:HeapDumpPath=/tmp/heapdump.hprof
  • -XX:OnOutOfMemoryError="sh ~/test.sh"
jvm参数设置模板
-Xms4096M 
-Xmx4096M 
-Xmn3072M 
-Xss1M 
-XX:MetaspaceSize=256M 
-XX:MaxMetaspaceSize=256M 
-XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC 
-XX:CMSInitiatingOccupancyFaction=92 
-XX:+UseCMSCompactAtFullCollection 
-XX:CMSFullGCsBeforeCompaction=0 
-XX:+CMSParallelInitialMarkEnabled 
-XX:+CMSScavengeBeforeRemark 
-XX:+DisableExplicitGC 
-XX:+PrintGCDetails 
-Xloggc:gc.log 
-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=/usr/local/app/oom