//常见配置汇总
//堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置新生代大小 -XX:NewRatio=n:设置新生代和老年代的比值.如:为3,表示新生代与老年代比值为1:3,新生代占整个新生代老年代和的1/4 -XX:SurvivorRatio=n:新生代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5 -XX:PermSize=n:设置永久代(方法区)初始大小 -XX:MaxPermSize=n:设置永久代最大大小 //收集器设置 -XX:+UseSerialGC:设置串行收集器(Serial) -XX:+UseParallelGC:设置并行收集器(Parallel) -XX:+UseParalledlOldGC:设置并行老年代收集器 -XX:+UseConcMarkSweepGC:设置并发收集器(CMS) //垃圾回收统计信息 -XX:+PrintGC -XX:+PrintGCDetails(最常用) -XX:+PrintGCTimeStamps -Xloggc:filename //并行收集器设置 -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数.并行收集//线程数. -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间 -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n) //并发收集器设置 -XX:+CMSIncrementalMode:设置为增量模式.适用于单CPU情况(极少使用,jdk1.8中已经不推荐使用). -XX:ParallelGCThreads=n:设置并发收集器新生代收集方式为并行收集时,使用的CPU数.并行收集线程数.G1收集器设置
-XX:G1HeapRegionSize=n:设置G1分区大小
-XX:MaxGCPauseMillis=n:和Throughput收集器一致,控制发生stop-the-word的时间(这是G1最主要的调优方式)
JDK自带监控和故障处理命令有jps jstat jmap jhat jstack jinfojps,JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。jstat,JVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。jmap,JVM Memory Map命令用于生成heap dump文件jhat,JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看jstack,用于生成java虚拟机当前时刻的线程快照。jinfo,JVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。 详细的命令使用参考这里(转载)
调优工具
常用调优工具分为两类,jdk自带监控工具:jconsole和jvisualvm
- jconsole,Java Monitoring and Management Console是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控
- jvisualVM,jdk自带全能工具,可以分析内存快照、线程快照;监控内存变化、GC变化等。
GC日志各字段含义(下面两张图分别表示young gc 和full gc) young gc
full gc