java - SocksSocketImpl finalize 方法的内存泄漏

标签 java tomcat memory-leaks amazon-ec2

我们的一个 Web 应用程序中一直存在 OutOfMemory。此应用程序在弹性负载均衡器后面的 Aamzon EC2 上的 Tomcat 上运行。从堆转储中,大部分内存都被 SocksSocketImpl 对象消耗了。 Yourkit 显示这些对象中有 99% 处于 Pending Finalization 状态。然而,不知何故,他们没有被最终确定和 GC'ed。在其他地区使用相同设置(相同 tomcat 版本和 JDK 版本)的相同应用程序没有问题。

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

最佳答案

我在运行 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 内存分析器进行分析,跟踪到 SSL 连接和 Hibernate session 消耗所有内存的对象终结器队列。升级到解决了问题:

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)

关于java - SocksSocketImpl finalize 方法的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717814/

相关文章:

java - 切换功能的交替使用

java - 链表堆栈实现 - Java

java - 更新 Apache Ignite WebSession 属性

Python 3 asyncio 如何正确关闭客户端连接

java - 字节数组的 JNI 内存泄漏

c++ - XERCESC 2.7 内存泄漏问题

java - 如何修复 "Exception in thread "AWT-EventQueue- 0"java.lang.NullPointerException"?

java - 登录 https 网站并仅使用核心 Java API 下载页面

maven - 使用 JSF 项目运行 Tomcat8 时出错?

java - eclipse+tomcat 中的 Servlet 不工作 [错误 404]