This page validates as XHTML 1.0, and will look much better in a browser that supports web standards, but it is accessible to any browser or Internet device. It was created using techniques detailed at glish.com/css/.
Sun JES Portal Server中的内存泄漏问题
有使用Sun Portal Server 2005Q1或Q4的客户反映,如果长时间的运行Portal服务器,最后Portal会出现内存泄漏的问题,经过测试,发现泄漏的主要元凶是在XML解析包Xerces库中。

用户在长时间使用Portal服务器的时候,会发现系统越来越慢,最后造成内存溢出或者系统长时间停顿进行内存回收。刚开始,我们还怀疑是客户自己的应用造成了内存的泄漏。但是最后经过测试,才将目标定位到Portal本身。下面是客户进行jmap命令导出的内存映象:
num #instances #bytes class name -------------------------------------- 1: 991081 870917080 [I 2: 5145481 641366104 [C 3: 2053574 254331176 [Ljava.lang.Object; 4: 3108680 74608320 java.lang.String 5: 427945 61625312 [[I 6: 2562450 61498800 com.sun.org.apache.xerces.internal.xni.QName 7: 2288309 54919416 java.util.HashMap$Entry 8: 1233788 49351520 com.sun.org.apache.xerces.internal.util.XMLAttributesImpl$Attribute 9: 46811 48683440 [Lcom.sun.org.apache.xml.internal.dtm.DTM; 10: 493921 43535872 [Ljava.util.HashMap$Entry; 11: 1801622 43238928 com.sun.org.apache.xml.internal.dtm.ref.ExpandedNameTable$HashEntry 12: 46811 38572264 [Lcom.sun.org.apache.xml.internal.dtm.ref.ExpandedNameTable$HashEntry; 13: 1281240 30749760 com.sun.org.apache.xerces.internal.util.AugmentationsImpl$SmallContainer 14: 1193093 28634232 com.sun.org.apache.xml.internal.dtm.ref.ExtendedType 15: 1138883 27333192 com.sun.org.apache.xerces.internal.util.SymbolTable$Entry 16: 46812 24716280 [Lcom.sun.org.apache.xml.internal.dtm.ref.ExtendedType; 17: 401476 23631816 [Ljava.util.Hashtable$Entry; 18: 1281240 20499840 com.sun.org.apache.xerces.internal.util.AugmentationsImpl 19: 427050 20498400 com.sun.org.apache.xml.internal.utils.SuballocatedIntVector 20: 47452 19740032 [Lcom.sun.org.apache.xerces.internal.util.SymbolTable$Entry;
根据上面的信息,我们可以大致定位到内存泄漏的问题跟Xerces的泄漏问题有关(详细信息请参见我另外有关Xerces泄漏问题的博客文章)。
解决方案有以下几种:
Posted at 05:29下午 四月 17, 2007 by 王昱 in Java | 评论[0]