首先,Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,咱们能够根据不一样须要区修改这些参数,以达到运行程序的最好效果。html
Xms、Xmxjava
-Xms、-Xmx分配用来设置进程堆内存的最小大小和最大大小。通常来讲,为了不频繁的堆内存震荡,致使系统性能降低,这两个值设为相等。jvm
Xmn性能
-Xmn用来设置堆内新生代的大小。经过这个值咱们也能够获得老生代的大小:-Xmx减去-Xmn优化
Xssspa
-Xss设置每一个线程可以使用的内存大小。操作系统
在相同物理内存下,减少这个值能生成更多的线程。固然操做系统对一个进程内的线程数仍是有限制的,不能无限生成,经验值在3000~5000左右。线程
除了这些配置,JVM还有很是多的配置,经常使用的以下:日志
-XX:PermSize、-XX:MaxPermSize
分配用来设置永久代的最小大小和最大大小。Java 8之后移除了方法区,取而代之的是本地元空间Metaspace,大小由-XX:MetaspaceSize和-XX:MaxMetaspaceSize调节。htm
-XX:MaxTenuringThreshold
设置转入老生代的存活次数。若是是0,则直接跳过新生代进入老生代。
-XX:NewRatio
设置老生代和新生代的比值,例如该值为3,则表示新生代与老生代比值为1:3。
–XX:+SurvivorRatio 设置Eden区与survivor的比例
-XX:PetenureSizeThreshold
设置大对象进入年老代的阈值(单位:byte),若是对象大小超过这个值,则直接在年老代进行分配,只对串行收集器和年轻代并行收集器有效,并行回收收集器不识别这个参数。
-XX:+PrintGCDetails
打印GC回收的过程日志
-XX:+UseParallelGC 新生代使用并行GC回收,能够尽量的减小GC回收的时间
–XX:ParallelGC-Threads:设置用于垃圾回收的线程数,一般状况下,能够设置和 CPU 数量相等。但在 CPU 数量比较多的状况下,设置相对较小的数值也是合理的;
–XX:+UseParallelOldGC:设置年老代使用并行回收收集器。
参考:JVM优化经验总结