JVM经常使用参数

-Xmx: Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其余内存开销而定。html

-Xms: Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM能够保留默认值。将堆的最小值参数与最大值参数设置为同样便可避免堆自动拓展。java

-Xmn:年轻代的大小。它的大小将直接影响老年代的大小,Sun官方推荐为整个堆大小的3/8。多线程

-XX:+HeapDumpOnOutOfMemoryError:让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便时候进行分析。性能

-XX:PermSize与-XX:MaxPermSize:调节永久代内存区的上限(Java8或已放弃为方法区永久代单独划份内存区域)。测试

-XX:+/-UseTLAB:ui

有两种堆对象内存分配的方式:“指针碰撞”(Bump the Pointer),另外一种是“空闲列表”(Free List)。虽然书上说指针碰撞方法在多线程上会面临不得不一样步的问题(CAS),但空闲列表在某种程度上也避免不了同步问题吧。除CAS以外另外一种解决同步问题的方式是把内存分配的动做按照线程划分在不一样的空间之中进行,即每一个线程在Java堆中预先分配一小块内存,称为本地线程分配缓冲(Thread Local Allocation Buffer,TLAB)。哪一个线程要分配内存,就在哪一个线程的TLAB上分配,只有TLAB用完并分配新的TLAB时,才须要同步锁定。虚拟机是否使用TLAB,能够经过-XX:+/-UseTLAB。spa

-Xss:每一个线程的栈容量大小。.net

-XX:MaxDirectMemorySize:DirectMemory(直接内存)容量可经过这个参数指定,若是不指定则默认与Java堆最大值(-Xmx)同样。 线程


 

回收方法区:指针

HopSpot虚拟机提供了-Xnoclassgc参数进行控制是否对无用类进行回收,还可使用

-verbose:class以及-XX:+TraceClassUnLoading查看类加载和卸载信息,其中-verbose:class和-XX:+TraceClassLoading能够在Product版的虚拟机中使用,

-XX:+TraceClassUnLoading参数须要FastDebug版的虚拟机支持。


-XX:+UseSerialGC:使用Serial + Serial Old收集器组合。

-XX:+UseParallelGC:使用Parallel Scavenge + Serial Old (PS MarkSweep)收集器组合。

-XX:+UseConcMarkSweepGC:使用CMS垃圾收集器。ParNew是使用CMS默认的新生代收集器。

-XX:+UserParNewGC:使用ParNew垃圾收集器。

-XX:+UseParallelOldGC:使用Parallel Scavenge + Parallel Old收集器组合。

 

-XX:SurvivorRatio:新生代中Eden区与Survivor区的容量比值。默认为8,表明Eden : Survivor = 8 : 1。

-XX:HandlePromotionFailure

-XX:ParallelGCThreads:设置ParNew收集器垃圾收集的线程数。

-XX:PretenureSizeThreshold:对象超过多大直接分配到老年代。

-XX:MaxTenuingThreshold:晋升到老年代的对象年龄。每一个对象坚持过一个Minor GC以后,年龄就增长1,当超过这个参数值就进入老年代。

-XX:HandlePromotionFailure:是否容许分配担保失败,即老年代的剩余空间不足以应付新生代的整个Eden和Survivor区的全部对象都存活的极端状况。

 

针对Parallel Scavenge收集器

-XX:MaxGCPauseMillis:容许设置一个大于0的毫秒数,收集器将尽量的保证内存回收花费的时间不超过设定值。

-XX:+UseAdaptiveSizePolicy:这是一个开关参数,当这个参数打开后就不须要手工指定新生代的大小、Eden与Survivor的比例、晋升老年代对象大小等参数细节,虚拟机会根据当前系统的运行状况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大吞吐量。

-XX:GCTimeRatio:垃圾收集时间占总时间的比率,一个大0小于100的整数。计算方法:若是设置为19则,容许的最大GC时间就占总时间的5%(1 / (1 + 19))。

 

CMS收集器

-XX:CMSInitiatingOccupancyFraction:当老年代的内存空间被使用超过必定百分比以后就进行一次Full GC以免因“浮动垃圾”形成的“Concurrent Mode Failure”。

-XX:+UseCMSCompactAtFullCollection:默认开启,解决内存空间碎片化致使没法分配连续大空间的问题。在进行Full GC时进行一次内存碎片的合并过程。

-XX:CMSFullGCsBeforeCompaction:用于设置执行多少次不压缩的Full GC后,进行一次内存碎片合并操做(默认为0,表示每次进入Full GC都进行碎片整理)。

 

更多JVM参数参考

相关文章
相关标签/搜索