【029】2020.12.12 周六 Java JVM调优案例05


JVM调优案例05

1.由安全点导致长时间停顿

    1.1) 问题

        一HBase集群垃圾回收时间常常在3秒以上

    1.2) 原因

        HBase的RPC Server的Listener线程执行到了一个连接超时清理函数的可数循环里,因为是int 索引,HotSpot没有设置安全点,导致GC时,必须等待所有循环都跑完才能进入到安全点,表现为长时间的停顿

    1.3)  解决

        把循环索引的数据类型从int修改为Long,作为不可数循环设置安全点,不用等待所有循环都跑完就鞥进行垃圾回收

    1.4) 其他

        三个时间概念

                ==user: 进程执行用户态代码所花费的处理器时间

                ==sys: 进程执行核心态代码所花费的处理器时间

                == real: 执行动作从开始到结束时所花费的时钟时间

2. Eclipse运行速度调优

      2.1) 概述

        使用作者自行编写的Eclipse的插件,获取到Eclipse的启动时间是15秒,GC耗时4秒多,加载类也是4秒多即时编译约2秒

    2.2) 升级JDK版本的性能变化和兼容问题

       ==问题

            升级JDK5到JDK6后Eclipse报OOM

       ==原因

            使用VisualVM 查看,原来是默认的永久代的空间大小为64MB,太小了,所以发生了OOM            

       ==解决

            手动设置永久代的空间大小为250MB


2.3) 编译时间和类加载时间的优化

    JDK6取消字节码校验启动时间比JDK5稍快

    HotSpot的2个编译器

        JIT编译

        即时编译


2.4)调整内存设置控制垃圾收集频率

    把新生代铜梁提升到128MB避免动态内存扩展

    屏蔽系统的显性垃圾回收System.gc()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章