内存泄漏与SocksSocketImpl finalize方法

时间:2014-02-12 03:11:06

标签: java tomcat memory-leaks amazon-ec2

我们在其中一个Web应用程序中使用了OutOfMemory。此应用程序在Elastic Load Balancer后面的Aamzon EC2上的Tomcat上运行。从堆转储中,大多数内存都被SocksSocketImpl对象占用。 Yourkit显示99%的这些对象处于Pending Finalization状态。然而,不知何故,他们还没有最终确定和GC。在其他区域具有相同设置(相同的tomcat版本和JDK版本)的相同应用程序并没有问题。

之前有没有人见过这种行为?任何指针都会有所帮助。谢谢你的时间。

3 个答案:

答案 0 :(得分:2)

我遇到了运行Tomcat 6.0.39的完全相同的问题,当Ubuntu服务器上的JDK升级为安全补丁时,内存问题就开始了:

java version "1.6.0_30"
OpenJDK Runtime Environment (IcedTea6 1.13.1) (6b30-1.13.1-1ubuntu2~0.12.04.1)
OpenJDK Server VM (build 23.25-b01, mixed mode)

使用Eclipse Memory Analyzer进行概述,跟踪到SSL Connections的对象的终结器队列和消耗所有内存的Hibernate会话。升级到以下问题解决了问题:

java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2)
OpenJDK Server VM (build 24.45-b08, mixed mode)

答案 1 :(得分:0)

升级到JVM 1.7.0_51后问题得到解决。怀疑,在套接字清理或GC期间,它似乎是一个JVM级别的问题。有问题的版本是1.6.0_30 OpenJDK。

答案 2 :(得分:0)

它是由回归到openjdk包引起的:

https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/1295987

它已经修复,但正在等待部署新的openjdk6软件包。