ur-*_*gel 8 java memory-leaks amazon-web-services heap-dump
我有一个在Amazon EC2上运行的应用程序(使用多种AWS产品,如S3,DynamoDB等)并且存在内存泄漏.我收集了一些堆转储,并通过Eclipse的Memory Analyzer工具运行它们,该工具将数百个实例sun.security.ssl.SSLSocketImpl(占用几十MB的内存)确定为可能的泄漏.
我无法弄清楚为什么这些SSLSocketImpl物体没有被处理掉.
SSLSocketImpl转储中的大多数实例都有两个引用,一个来自java.lang.ref.Finalizer,一个来自com.amazonaws.internal.SdkSSLSocket.我的堆转储中的Finalizer线程报告为空闲,没有任何对象等待完成.但是已经清理了com.amazonaws.internal.SdkSSLSocket引用泄漏SSLSocketImpl对象的对象.至少,我在堆转储中找不到它们(MAT中的Dominator视图).
我是分析Java堆转储的新手.我接下来应该寻找什么?如果SdkSSLSocket确实已经清理了亚马逊对象,为什么这些SSLSocketImpl对象也没有被清除?
谢谢!
小智 3
这可能是因为未设置 SSL 会话缓存大小,默认情况下该大小是无限的,最终可能会消耗大量堆空间。设置 javax.net.ssl.sessionCacheSize = 1000 应该有所帮助。
| 归档时间: |
|
| 查看次数: |
643 次 |
| 最近记录: |