JVM调优
JVM调优设计哪几方面?
- 合理的编写程序
- 充分并合理的使用硬件资源
- 合理的进行JVM调优
对于非堆内存
堆外内存
文件句柄
Socket句柄
数据库连接
文件
限制文件大小,最好采用异步方式(写sql语句最好使用limit限制,避免栈溢出)
- 网络IO:
限流,并及时关闭
大对象
对于JVM是一个噩梦。避免使用大对象,如果使用尽量减少生存时间
JVM调优原则:
- 降低Full GC 频次,一天1-2次,尽量控制在晚上,可以选择重启服务器或者定时任务出发Full GC。
- 确保大多数对象“朝生夕死”
- 提高大对象的进入门槛(-XX:MaxTenuring=15)
JVM调优参数
- -server (64位无需此参数)
- -Xms6000M
- -Xmx6000M
- -Xmn500M
- -XX:PermSize=500M
- -XX:MaxPermSize=500M
- -XX:SurvivorRatio=65536
- -XX:MaxTenuringThreshold=0
- -Xnoclassgc
- -XX:+DisableExplicitGC
- -XX:+UseParNewGC
- -XX:+UseConcMarkSweepGC
- -XX:+UseCMSCompactAtFullCollection
- -XX:CMSFullGCsBeforeCompaction=0
- -XX:+CMSClassUnloadingEnabled
- -XX:-CMSParallelRemarkEnabled
- -XX:CMSInitiatingOccupancyFraction=90
- -XX:SoftRefLRUPolicyMSPerMB=0
- -XX:+PrintClassHistogram
- -XX:+PrintGCDetails
- -XX:+PrintGCTimeStamps
- -XX:+PrintHeapAtGC
- -Xloggc:log/gc.log
说说这些参数的意义
-server -Xms512m -Xmx512m -Xss1024K
-XX:PermSize=256m -XX:MaxPermSize=512m -
XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -
XX:+UseCMSInitiatingOccupancyOnly。
Server模式启动
最小堆内存512m
最大512m
每个线程栈空间1m
永久代256
最大永久代256
最大转为老年代检查次数20
Cms回收开启时机:内存占用80%
只以CMS的阈值来收集垃圾