【jvm】调优实战

    在实际生产环境当中,服务器资源有限,有时多个应用会存放到一台服务器资源上,务必会造成资源紧张,每一个应用都必须合理使用资源,防止某一个应用的异常导致其他相关应用的不可用造成生产故障。那么JAVA程序首当其冲,需要调整JVM参数使其达到相对合理的配比。

一、JVM基础知识简单回顾

    1、程序的运行需要把.java文件编译成虚拟机可识别的.class。

    2、jvm加载器加载class文件进行解析(类加载子系统经过加载-链接-初始化),变成运行时数据区.此处不在展开具体class文件内容和具体的解析过程。

    3、在Java虚拟机规范中,定义了五种运行时数据区,分别是Java 堆、方法区、虚拟机栈、本地方法区、程序计数器。特别注意的是堆和方法区是线程共享的,其他都是线程私有的。

    4、当所有Java类加载使用过程中,所有的数据都会在堆栈中创建和使用,当对象过多,就要合理的使用垃圾回收算法,合理的设置堆栈的大小,以达到应用的正常运行。

二、实战调优案例

     在生产环境中应用服务器内存近满,需要排查哪个服务的内存占用最多。并做合理调优。

1、使用top命令,查看MEM占用率

2、使用JPS -lm 查看对应的进程,找到对应占用最高的java应用。

3、观察其JVM内存回收情况

        发现JVM minorGC回收频繁,年轻代只使用了 EDON区,S1、S0 区未被启用。大多数对象无法存活到第二次垃圾回收,更加有一部分进入到老年代无法撑过一次FULL GC。

        

4、查看reception 的option 配置,发现使用的GC 为UseParallelOldGC 并行回收,标记整理算法。并且堆内存设置为固定4G,这就导致垃圾回收无法归还物理内存。

5、观察后提出修改建议,

   1)、 固定堆内存设置变小。

   2)、启用年轻代 S1 S0,并且设置进入老年代次数为默认,适量调整EDON区大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值