JVM相关参数说明:

    -XX:+DisableExplicitGC,这个参数作用是禁止代码中显示调用GC,代码中调用System.gc()没有任何效果,如果我们的应用中使用了java nio中的direct memory,那么使用-XX:+DisableExplicitGC一定要小心,存在潜在的内存泄露风险。
    -XX:+UseSerialGC:**使用串行回收器进行回收,这个参数会使新生代和老年代都使用串行回收器,新生代使用复制算法,老年代使用标记-整理算法。Serial收集器是最基本、历史最悠久的收集器,它是一个单线程收集器。一旦回收器开始运行时,整个系统都要停止。Client模式下默认开启,其他模式默认关闭。

    -XX:+UseParNewGC:Parallel是并行的意思,ParNew收集器是Serial收集器的多线程版本,使用这个参数后会在新生代进行并行回收,老年代仍旧使用串行回收。新生代S区任然使用复制算法。操作系统是多核CPU上效果明显,单核CPU建议使用串行回收器。打印GC详情时ParNew标识着使用了ParNewGC回收器。默认关闭。

    -XX:+UseParallelGC:代表新生代使用Parallel收集器,老年代使用串行收集器。Parallel Scavenge收集器在各个方面都很类似ParNew收集器,它的目的是达到一个可以控制的吞吐量。吞吐量为CPU用于运行用户代码的时间与CPU总消耗时间的比值,即吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间),虚拟机运行100分钟,垃圾收集花费1分钟,那吞吐量就99%。Server模式默认开启,其他模式默认关闭。Parallel收集器还提供了自适应的调节策略-XX:UseAdaptiveSizePolicy,即JVM会根据实际运行情况动态调整新生代大小、新生代和s区比例、晋升老年代对象大小等细节参数。
    _
    -XX:+UseParallelOldGC:新生代和老年代都使用并行收集器。打印出的GC会带PSYoungGen、ParOldGen关键字。

    -XX:+UseConcMarkSweepGC:Concurrent Mark Sweep 并发标记清除,即使用CMS收集器。它是和应用程序线程一起执行,相对于Stop The World来说虚拟机停顿时间较少。停顿减少,吞吐量会降低。它使用的是 标记清除算法,运作过程为四个步骤,分别是 初始标记—并发标识—重新标记—并发清除。它是老年代的收集算法,新生代使用ParNew收集算法。默认关闭。CMS收集器的缺点是对服务器CPU资源较为敏感,在并发标记时会降低吞吐量。它使用的标记清除算法也会产生大量空间碎片,空间碎片的存在会加大Full GC的频率,虽然老年代还有足够的内存,但是因为内存空间连续,不得不进行Full GC。

    -XX:+CMSParallelRemarkEnabled:采用并行标记方式降低停顿。

    -server:更高的性能
    -Xms4096m:初始堆内存4g
    -Xmx4096m:最大堆内存4g
    -Xmn1024m:年轻代1g
    -Xss256K:每个线程占用的空间
    -XX:+DisableExplicitGC:禁止显示调用gc
    -XX:MaxTenuringThreshold=15:在年轻代存活次数
    -XX:+UseParNewGC:对年轻代采用多线程并行回收
    -XX:+UseConcMarkSweepGC:年老代采用CMS回收
    -XX:+CMSParallelRemarkEnabled:在使用UseParNewGC 的情况下, 尽量减少 mark 的时间
    -XX:+UseCMSCompactAtFullCollection:在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使 memory 碎片减少
    -XX:LargePageSizeInBytes=128m:指定 Java heap的分页页面大小
    -XX:+UseFastAccessorMethods:get,set 方法转成本地代码
    -XX:+UseCMSInitiatingOccupancyOnly:指示只有在 oldgeneration 在使用了初始化的比例后concurrent collector 启动收集
    -XX:CMSInitiatingOccupancyFraction=70:年老代到达70%进行gc
    -Djava.awt.headless=true :Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。
    -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/gclogs/gc.log:打印日志信息