十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1. JVM内存关键参数
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站建设,高端网页制作,对成都湿喷机等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业营销推广优化,H5建站,响应式网站。
参数均在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/2396840
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的详细信息
一般来说,根据下面的风格设置:
更多的参数及介绍,请参考:
https://www.cnblogs.com/hongdada/p/10277782.html