免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2919 | 回复: 1
打印 上一主题 下一主题

借助MAT、VisualVM进行JVM性能调优 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-20 13:06 |只看该作者 |倒序浏览
借助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性能调整的工作有个不懒的结果。^_^

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2011-06-20 17:09 |只看该作者
原创吗?请问第三步花了多长的时间呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP