JVM调优总结(含tomcat调优配置)

JVM参数
    -     标准参数(所有jvm都支持)
    -X  非标准参数(不同jvm不同)
-    XX 不稳定参数(下一版本可能取消)

JVM中的垃圾收集器

    Serial Collector单线程串行执行GC(效率高,但吞吐量小)
    Parallel Collector多线程并行GC(默认,效率高,吞吐量大,单处理器效率可能低, 停顿时间长

    Concurrent Mark Sweep并发GC,和应用线程同时执行(将内存分块,每个线程分块GC,标记清除, 停顿时间短
    G1并发GC(停顿短、并发大)

java对象分配
    栈上分配(JVM默认开启栈上优化)
        线程私有、小对象(方法结束栈清空不需要垃圾收集)
         无逃逸(方法结束,对象消失。如果仍然有其它对象持有它的引用,说明逃逸了(作用域逃出了方法))
1
-XX:+DoEscapeAnalysis   //使用逃逸分析---可以在栈上分配对象(不使用则不能分配)
2
-XX:+EliminateAllocations  //使用标量替换
    线程本地分配(分配在每个线程的工作内存,在eden区分配,但属于自己线程的专属空间)
        占用eden 1%
        自己线程所有,不用竞争加锁(分配速度快)
        小对象
1
-XX:+UseTLAB
    老年代分配(堆)
        大对象

     新生代eden分配(堆)
        普通对象

常用参数
1
//----------------堆设置------------------
2
-Xms10M  //程序开始时虚拟机分配的堆内存
3
-Xmx10M  //虚拟机给程序分配的最大堆内存,超出则OOM异常
4
-Xss  //线程栈大小
5
-XX:NewSize=n  //设置年轻代大小
6
-XX:NewRatio=n  //年轻代老年代大小比例
7
-XX:SurvivorRatio=n //新生代eden区和survivor区比例
8
-XX:MaxPermSize=n  //设置持久代大小
9
    
10
    
11
//----------------收集器----------------
12
-XX:+UseSerialGC  //串行收集器
13
-XX:+UseParallelGC   //并行收集器
14
-XX:+UseConcMarkSweepGC   //并发收集器
15
    
16
//-------------------GC信息
17
-XX:+PrintGC
18
-XX:+PrintGCDetails
OOM异常的调优处理
1
/**
2
 * 内存溢出调优处理:开启Dump文件的方式,将异常信息保存在文件里,用Virtual VM导入查看
3
 * -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:\tmp\jvm.dump -XX:+PrintGCDetails
4
 * -Xms10M -Xmx10M
5
 */
6
public class OOMTest {
7
    public static void main(String[] args){
8
        List<Object> list = new ArrayList<>();
9
        for (int i=0;i<10000000;i++) list.add(new byte[1024*1024]);
10
    }
11
}
12
··OOM异常后得到dump文件
··打开Virtual VM导入dump文件,发现byte[]数组占用了90.8%的堆空间,因此可以定位到相应代码进行修改
 
tomcat优化配置
配置文件:apache\apache-tomcat-7.0.73\bin\catalina.bat

1
set JAVA_OPTS= 
2
    -Xms4g   //服务器只运行一个tomcat一个jvm虚拟机尽可能设置和机器内存相近
3
    -Xmx4g
4
    -Xss512k
5
    -XX:+AggressiveOpts //凡是能优化的功能都打开(重要!)
6
    -XX:+UseBiasedLocking  //开启偏向锁,锁优化(经常用)
7
    -XX:PermSize=64M  //初始永久区大小,刚开启虚拟机时类加载较多,容易卡死,可以适当调大(JDK8取消)
8
    -XX:MaxPermSize=64M  //最大永久区大小
9
    -XX:+DisableExplicitGC  //禁止显式调用GC(禁用System.GC(),防止打乱调优计划)
10
    
11
    -XX:+UseConcMarkSweepGC  //使用CMS收集器
12
    -XX:+UseParNewGC  //使用并行收集器收集新生代
13
    -XX:+CMSParallelRemarkEnabled  //减少mark标记时间
14
    -XX:+UserCMSCompactAtFullCollection  //并发收集时压缩老年代
15
    -XX:LargePageSizeInBytes=128m  //内存分页大小
16
    -XX:+UseFastAccessorMethods   //get/set方法转成本地代码

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值