WebSphere JVM classloader 内存泄漏

WebSphere JVM classloader 内存泄漏

ID:37900827

大小:41.00 KB

页数:9页

时间:2019-06-02

WebSphere JVM classloader 内存泄漏_第1页
WebSphere JVM classloader 内存泄漏_第2页
WebSphere JVM classloader 内存泄漏_第3页
WebSphere JVM classloader 内存泄漏_第4页
WebSphere JVM classloader 内存泄漏_第5页
资源描述:

《WebSphere JVM classloader 内存泄漏》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、WebSphere JVM classloader 内存泄漏近段时间,我们项目中用到的WebSphere应用服务器(WAS),但在客户的production环境下极不稳定,经常宕机。给客户造成非常不好的影响,同时,也给项目组很大压力。为此,我们花了近一个月时间对其诊断,现在基本上稳定了,需要继续观察一段时间。现在我主要将工作做一个阶段性的总结。我们的产品环境是:WAS6.0+DB28.1+AIX5.3+RS/6000。在该产品环境下,出现的问题非常多,现象如下:WAS经常不稳定、宕机几乎一天一次,经常报告OutOfMemory(内存泄漏吗?NO)。DB2

2、连接数过大,有时把DB2撑死,有时也把AIX撑死。AIX虚拟内存报错、分页报错、IO也报错、还有很多其它莫名奇妙的错。总是,每次问题发生的现象和理论上的总是不一致,导致我们不知道从何入手,也无从检测自己的优化参数。咨询过多次IBM技术支持,只解决了某些局部问题。虽然问题依然存在,但我想,解决问题的思路、特别是理论基础,还是有一些规律和原则。对于WAS这块,我近段时间的主要时间集中在以下几个方面(时间顺序):1、Java性能监测工具:Jprofiler,也用到Jprobe。后来发现Jprofiler在AIX下几乎不可用。2、IBMJava虚拟机和WAS技术

3、细节,特别是IBMJVM的GC原理,我发现它和sun、bea的差别很大。3、IBM的heap分析器HeapAnalyzer、GCCollector。这两个事后监测工具非常实用,特别是我们的产品运行环境,非测试环境。4、某些Application的怀疑和诊断。5、AIX诊断,我几乎没有这个能力,只能常规监测一下,需另请高人。我打算将本文分成以下几个部分总结:JVM原理、IBMJVM的GC策略和调优。Jprofiler和IBM工具的实际体会WAS的诊断体会和AIX调优下面开始主题吧,可能比较零碎,另外,开始的理论篇基本上看书都可以,我只是总结一下,再添加一些

4、自己的理解。以下是我参考的最重要的两本电子书和一些网站:《InsideJavaVrtualMachine》:半部分有约四章我认为非常棒,其它章节可能意义不大。《TheJavaVirtualMachineSpecification,2nd》:前半部分有两三章很不错,不过可以对照上一本书看。sun的hotspot虚拟机技术:http://java.sun.com/javase/technologies/hotspot/BEA的JRockit虚拟机技术:http://edocs.bea.com/jrockit/geninfo/genintro/index.ht

5、mlJVM技术文档入口,虚拟机理论,内存泄漏诊断等的索引页。IBM诊断资料:http://www-128.ibm.com/developerworks/java/jdk/diagnosis/上面有一个500多页的pdf文档,对IBMJVM技术和诊断讲解很深入。我不得不提的是,在查资料这块,BEA和Sun都有很好的官方文档和论坛支持,并且官方文档导航非常好。虽然IBM的诊断资料也不少,但需要搜索,其搜索是很痛苦的。而且,IBM官方论坛很差。如果用IBM的产品出问题,切记:找IBM技术支持,千万不要蒙着头搞!反正它们的产品很少免费。说实话,它们的技术支持还是

6、挺负责的,一般会为你推荐很多support资料,而该资料往往都在developerworks网站上,属于support那个频道,但你就是搜不着。Java虚拟机规范概要研究Java虚拟机,首先要了解Sun的Java虚拟机规范。现在,该实现版本很多,如比较有名的Sun、IBM、BEA、Apple、HP、MS、ApacheHarmony。它们都实现了JVM规范,但有各自扩展。譬如,针对IBM虚拟机的堆碎片导致OutOfMemory(OOM),在Sun的虚拟机上就不会发生。Sun的JVM有maxPermSize的概念,IBM就没有,如果你设置这个参数,虚拟机根本

7、就启动不了。比较有意思的是,学Java,就一定要了解各种规范,这和MS的风格很不一样。Sun总是在定义一些规范,实现都留给各厂商。我们除了理解规范本身外,一定要理解规范和实现之间的关系,譬如JDBC规范和JDBC驱动的关系,它们是怎么组合到一起的。要是你用过php的xml解析库,或db函数,就会体会深刻,它们可没有什么规范可言,所以每个数据库厂商的db函数用法都不一样。我推荐大家研读一下HSQLDB的jdbc和Tomcat的servlet相关实现,因为我认为它们还是比较好懂的。JVM规范只是定义一个虚拟机该做什么,但它并没有要求你该怎么做。例如我们最常见

8、的Servlet规范,在该规范中,有HttpServletRequest、Htt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。