本文共 2948 字,大约阅读时间需要 9 分钟。
1、堆中分为新生代和老年代。如图:eden、s0、s1为新生代区域,tenured为老年代区域。s0、s1是两个大小相等的区域,称为幸存区,该区域使用的复制算法。
串行收集器是GC中常用的一种收集器。
1、其最古老、最稳定 2、效率高 3、可能会产生较长的停顿 4、使用参数-XX:+UseSerialGC
启动串行收集器,使用该参数: 1、简称:ParNew ,并行收集器参数-XX:+UseParNewGC
,启动后,新生代并行,老年代串行,会影响新生代的回收,对老年代没有影响。
-XX:ParallelGCThreads
,可以设置线程的数量。 启用ParNew并行收集器,应用程序暂停,GC线程并发运行。 类似于ParNew,新生代采用复制算法,老年代采用标记-压缩算法,更加关注吞吐量,新生代并行。
1、参数设置:-XX:+UseParallelGC
,使用Parallel收集器 + 老年代串行。 2、-XX:+UseParallelOldGC
,使用Parallel收集器 + 并行老年代。 1、-XX:MaxGCPauseMills
-XX:GCTimeRatio
以上两个参数时矛盾的,因为停顿时间和吞吐量不可能同时调优。
csm收集器,全程Concurrent Mark Sweep 并发标记清除,采用的标记清除算法,与标记压缩算法相比,并发阶段会降低吞吐量,属于老年代收集器(新生代使用ParNew),参数-XX:+UseConcMarkSweepGC
。
1、尽可能的降低停顿。
2、会影响系统整体吞吐量和性能。3、清理不彻底
4、因为和用户线程一起运行,不能在空间快满时再清理。
-XX:CMSInitatingOccupancyFraction
设置触发GC的阈值,表示当推空间占用多少时,自动触发GC执行。标记清除和标记压缩的对比,标记清除之后会产生碎片空间,会影响对象的存储,标记压缩经过清理之后,是连续的空间。而标记压缩清理之后,对于存活的对象的位置会产生移动,应用程序会找不到对象。
1、-XX:+UseCMSCompactAtFullCollection
在每一次Full GC之后,进行一次整理,整理过程是独占的,会引起停顿时间变长。
-XX:+CMSFullGCsBeforeCompaction
,设置进行几次Full GC后,进行一次碎片整理。 3、-XX:ParallelCMSThreads
,设置CMS的线程数量。 从以下三个方面提高应用程序性能:
1、软件如何设计架构。 2、代码如何写。 3、堆空间如何分配。1、-XX:+UseSerialGC
:在新生代和老年代使用串行收集器。
-XX:SurvivorRatio
:设置eden去大小和survivior区大小的比例。 3、-XX:NewRatio
:设置新生代和老年代的比例。 4、-XX:+UseParNewGC
:在新生代使用并行收集器。 5、-XX:+UseParallelGC
:新生代使用Parallel收集器,老年代串行。 6、-XX:+UseParallelOldGC
:老年代使用并行回收收集器。 7、-XX:ParallelGCThreads
:设置Parallel收集器,用于垃圾回收的线程数。 8、-XX:+UseConcMarkSweepGC
:新生代使用并行收集器,老年代使用CMS+串行收集器。 9、-XX:ParallelCMSThreads:
设定CMS的线程数量。 10、-XX:CMSInitiatingOccupancyFraction
:设置CMS收集器在老年代空间被使用多少后触发。 11、-XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片的整理。
12、-XX:CMSFullGCsBeforeCompaction
:设定进行多少次CMS垃圾回收后,进行一次内存压缩。 13、-XX:+CMSClassUnloadingEnabled
:允许对类元数据进行回收。 14、-XX:CMSInitiatingPermOccupancyFraction
:当永久区占用率达到这一百分比时,启动CMS回收。 15、-XX:UseCMSInitiatingOccupancyOnly
:表示只在到达阈值的时候,才进行CMSS回收。 测试程序运行时,GC垃圾回收器各个参数对Tomcat的影响。
1、环境
tomcat在服务器上,JMeter在另一台计算机上,不能运行在同一台计算机上,防止JMeter对Tomcat的运行产生的影响。
将参数设置在Tomcat中bin下的Catalina.bat中。最后送给大家一句话,细节决定成败!!!
性能的好坏根本在于应用,GC参数只是在应用的基础上做出一些微调。在一个好的应用上面,进行参数设置,将起到事半功倍的效果。参数设置不合理,会影响性能,产生大的延时。转载地址:http://xnfoi.baihongyu.com/