借助MAT、VisualVM进行JVM性能调优

        公司有一个老的营销系统,是基于JDK1.4开发的,原来是集成在公司的协同办公平台上,这个系统问题可真不少,特别不稳定,经常会发生内存溢出现象,一天要自动关闭服务好几回,不仅影响了使用这个系统的人,也严重影响使用协助办公平台的人,更给管理员带来不少麻烦。借着给协同办公平台升级的时机,我决定改进一下营销系统的运行状况。

  处理这种问题的第一步:应用分离,把影响控制到最小范围内。首先是把这个营销系统跟协同办公平台分离,各自部署一个应用,然后提供单点登录,让使用营销系统的人可以在使用协同办公平台的时候直接登录到营销系统。这样子,即使营销系统出了问题,也不会影响到其他人使用营销办公平台。

  第二步:查找问题所在,为什么这个系统会这么频繁地发生OME现象?用MAT对导出的二进制堆文件做分析,发现占据了一半内存的对象是CacheModel,CacheModel是iBatis的缓存对象。分析这个系统,很多时间都是在做CRUD操作,我的判断是,缓存有多余的,或是没有发挥其应有的功能,于是,果断地把iBatis缓存关闭。再观察,OME现象已有好转,用MAT观察,没发现占据多数内存的对象,但情况仍不容乐观,仍然会经常发生OME现象,于是,怀疑的重点转系到JVM的垃圾回收。

  第三步:升级JDK,直接部署在JDK1.6上,修改了几个不兼容的类之外,系统能够正常启动,也能够正常访问使用。与JDK1.4相比较,JDK1.6在垃圾回收上有了很大的改进,用VisualVM观察,系统连续运行100个小时,没发生OME现象,并且堆的分配和回收也没有什么异常现状,OK.

     至此,使用MAT、VisualVM协助进行JVM性能调整的工作有个不懒的结果。^_^
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值