所以基本的是我有GlassFish 2.1和Java 1.6.0_15,它会工作几天,但它吃尽其所有的内存,看起来无论多大的最大内存设置。它是一个32位的jvm,最大内存现在为4GB,并且它快速使用它,然后与垃圾收集器一起使用,从而带来吞吐量的爬行。所以经过几次尝试后,我得到了一个3GB的堆转储,并用YourKit打开它。如何修复Glassfish中泄漏的SSLSessionImpl?
这个服务器上的用法是一个swing客户端,它执行一些RMI调用和一些REST https调用,再加上一个调用大量REST https服务的php网站。
它显示:
Name Objects Shallow Size Retained Size
java.lang.Class 22,422 1,435,872 1,680,800,240
java.lang.ref.Finalizer 3,086,366 197,527,424 1,628,846,552
com.sun.net.sll.internal.ssl.SSLSessionImpl 3,082,887 443,935,728 1,430,892,816
byte[] 7,901,167 666,548,672 666,548,672
...等等。记者去了哪里?噢,300万个SSLSessionImpl实例,就是这样。
看起来好像所有的https调用都会导致这些SSLSessionImpl对象累积,但它们从未被GC化过。在YourKit中查看它们,终结器是GC根。在网络上浏览这看起来非常像http://forums.sun.com/thread.jspa?threadID=5266266和http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=80df6098575e8599df9ba5c9edc1?bug_id=6386530
我该去哪里?我如何才能达到这个底部?
提交补丁:S – 2010-06-16 21:45:01
那么你是说这是你见过的一个问题? – Jim 2010-06-17 16:26:36