I have an application that runs on Amazon EC2 (using multiple AWS products like S3, DynamoDB, etc.) and has a memory leak. I collected several heap heaps and ran them through the Eclipse Memory Analyzer Tool, which detected several hundred instances of sun.security.ssl.SSLSocketImpl
(occupying tens of MB of memory) as possible leaks.
I am having problems, however, figuring out why these SSLSocketImpl
objects SSLSocketImpl
not deleted.
most SSLSocketImpl
instances in dumps have two links: one from java.lang.ref.Finalizer
and one from com.amazonaws.internal.SdkSSLSocket
. The Finalizer thread in my heap dump is reported as unoccupied, with no objects awaiting completion. but com.amazonaws.internal.SdkSSLSocket
objects referencing missing SSLSocketImpl
objects seem to have been cleared. at least I cannot find them in a heap dump (Dominator representation in MAT).
I am new to java heap dump analysis. What should I look for next? if Amazon SdkSSLSocket
objects really were SdkSSLSocket
, why weren't SSLSocketImpl
objects SSLSocketImpl
as well?
thanks!
source share