JVM和GC关键参数-创新互联

1. JVM内存关键参数

创新互联成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、成都app软件开发手机网站制作设计、微信网站制作、软件开发、托管服务器等实行标准化操作,让客户可以直观的预知到从创新互联可以获得的服务效果。

参数均在tomcat/bin/catalina.sh中设置

-server:服务器模式,不配置默认是-client,一定要作为第一个参数。

-Xms和-Xmx:堆的最小值和大值。线上这俩值必须一致。设置成一样,避免每次GC之后重新分配堆的大小。建议堆的大值设置为可用内存大值的80%(使用命令free或cat /proc/meminfo查看,实际可用物理内存=free+buffer+cache)。但是如果真的设置到了80%,服务器的内存可能会使用过高,可以调低一点。

-Xmn:设置堆内存中的年轻代大小,剩下的为年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8

-XX:NewRatio:表示年轻代与年老代的比值,去掉-Xmn这个参数后,默认使用这个参数,比值是2,也就是年轻代占1/3

-XX:SurvivorRatio:设置两个survivor区与eden区的比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10

-XX:PermSize和-XX:MaxPermSize(jdk1.7):永久代初始值,默认是物理内存的1/64,永久代大值,默认是物理内存的1/4。建议分别设置为128、512

-XX:MetaspaceSize和-XX:MaxMetaspaceSize(jdk1.8):同上

-Xss:设定每个线程的栈大小。每个线程都有一个栈,用于保存函数调用、返回地址等,默认为1M,一般不需修改。

-XX:+AlwaysPreTouch:jvm启动的时候就分配内存,其实就是预热的效果。

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=path_address:jvm崩溃的时候会打印出堆信息

如果catalina.sh里没有设置-Xms -Xmx -Xmn等值,可以在以下页面查看,参考:https://blog.51cto.com/11009785/2396840JVM和GC关键参数

2. GC相关的参数

-XX:+UseConcMarkSweepGC:CMS,并发收集器(针对年老代)

-XX:CMSInitiatingOccupancyFraction=75和-XX:+UseCMSInitiatingOccupancyOnly一起使用,设定CMS在对内存占用率达到75%的时候开始GC(控制频率,减少时常),第二个参数就是说要用前面设定的值。默认这个值是 -1,使用以下命令,可以查看设置的值,其中2713改为java的pid(通过ps -ef | grep java查看)

jinfo -flag CMSInitiatingOccupancyFraction 2713

然而,请记住大多数情况下,JVM比我们自己能作出更好的垃圾收集决策。因此,只有当我们充足的理由(比如测试)并且对应用程序产生的对象的生命周期有深刻的认知时,才应该使用该标志。

-XX:+ExplicitGCInvokesConcurrent:在CMS中并行执行GC,不会暂停,提升GC效率

-XX:+ParallelRefProcEnabled和-XX:+CMSParallelInitialMarkEnabled一起使用,在CMS中并行执行,减少暂停时间

-XX:+CMSScavengeBeforeRemark:在CMS GC之前执行一次ygc(ygc针对年轻代,CMS GC针对年老代),避免CMS GC和ygc连在一起执行从而增大暂停时间

-XX:+UseCMSCompactAtFullCollection:CMS是不会整理堆碎片的,加上此参数可以对存活的对象进行整理,使memory碎片减少

-XX:CMSFullGCsBeforeCompaction=3: 多少次Full GC 后压缩old generation一次。应该是针对-XX:+UseCMSCompactAtFullCollection设置的次数。

-XX:+CMSClassUnloadingEnabled:(只有在UseConcMarkSweepGC也启用的情况下才有用)在使用CMS垃圾回收机制的时候是否启用类卸载功能。默认这个是设置为不启用的,如果你启用了CMSClassUnloadingEnabled ,垃圾回收会清理持久代,移除不再使用的classes。

-XX:+PrintGCDateStamps -verbose:gc,在log里打印GC的详细信息

一般来说,根据下面的风格设置:

JVM和GC关键参数

更多的参数及介绍,请参考:

https://www.cnblogs.com/hongdada/p/10277782.html

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:JVM和GC关键参数-创新互联
链接分享:http://scyanting.com/article/dpgsij.html