常见的JVM参数配置
垃圾回收统计信息
-XX:+PrintGC 打印GC简要信息
-XX:+PrintGCDetails打印GC的详细信息
-XX:+PrintGCTimeStamps打印CG发生的时间戳
-Xloggc:log/gc.log 指定GC log的位置,以文件输出
-XX:+PrintHeapAtGC 每一次GC前和GC后,都打印堆信息。
堆设置
-Xms:初始堆大,最小堆
-Xmx:最大堆大小
-Xmn:设置新生代的大小
-XX:NewRatio新生代和年老代的比值,如为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代之和的1/4
-XX:SurvivorRatio设置两个Survivor区和eden的比值。注意Survivor区有两个。如:8,表示Eden:Survivor=8:2,一个Survivor区占整个年轻代的1/10
-XX:PermSize:设置永久区的初始空间
-XX:MaxPermSize:设置永久区的最大空间。
-XX:+MaxTenuringThreshold=10:新生代垃圾的最大年龄,代表对象在Survivor区经过10次复制以后才进入老年代。如果设置为0,则年轻代对象不经过Survivor区,直接进入老年代。
-XX:+PretenureSizeThreshold:设置大对象直接进入老年代的阈值。当对象的大小超过这个值时,将直接在老年代分配。
栈的分配参数
-Xss:设置栈空间的大小
垃圾收集器设置
串行收集器的设置
-XX:+UseSerialGC:设置串行收集器,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿。
并行回收收集器设置(ParallelGC收集器的目标是达到一个可控制的吞吐量)
-XX:+UseParNewGC:设置年轻代为并行收集。
-XX:+UseParallelGC:设置年轻代使用并行回收收集器。多个线程并行执行GC,一般适用于多处理器系统中,可以提高GC的效率,但算法复杂,系统消耗较大。
-XX:+UseParalledlOldGC:设置老年代为并行回收收集器,Java1.6之后才出现。
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的线程数,最好与CPU数目相等。
-XX:MaxGCPauseMillis=n:设置年轻代每次并行垃圾回收的最大暂停时间。
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
-XX:+UseAdaptiveSizePolicy:自适应策略,自动选择年轻代区大小和相应的Survivor区比例。
CMS并发收集器(以最短停顿为目标)
-XX:+UseConcMarkSweepGC:使用CMS内存收集。
-XX:+ParallelCMSThreads: 设定 CMS 的线程数量。
-XX:CMSFullGCsBeforeCompaction:CMS多少次后进行内存压缩,由于并发收集器不对内存空间进行压缩整理,所以运行一段时间以后会产生"碎片",使得运行效率降低。
-XX:+UseCMSCompactAtFullCollection:在FULL GC的时候,对年老代的压缩。CMS是不会移动内存的,因此,这个非常容易产生碎片,导致内存不够用,因此,内存的压缩这个时候就会被启用。可能会影响性能,但是可以消除碎