Я использую анализатор памяти Eclipse для анализа дампа кучи для моего приложения, поскольку я думаю, что где-то происходит утечка памяти. Я не совсем уверен, что искать, но в отчете Leak Suspect в MAT показаны 4 «проблемных подозреваемых»:
The class "org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnectionImpl", loaded by "<system class loader>", occupies 608,976 (16.15%) bytes. The memory is accumulated in one instance of "java.util.jar.JarFile" loaded by "<system class loader>".
One instance of "org.apache.harmony.xml.ExpatParser" loaded by "<system class loader>" occupies 501,304 (13.29%) bytes. The memory is accumulated in one instance of "java.lang.Object[]" loaded by "<system class loader>".
127 instances of "org.bouncycastle.jce.provider.X509CertificateObject", loaded by "<system class loader>" occupy 451,280 (11.97%) bytes. These instances are referenced from one instance of "java.util.Hashtable$HashtableEntry[]", loaded by "<system class loader>"
6,608 instances of "java.lang.String", loaded by "<system class loader>" occupy 407,824 (10.81%) bytes.
Последнее, что я предполагаю, это то, что я использую слишком много строк? Остальные я понятия не имею. Я не использую шифрование, поэтому я не знаю, почему BouncyCastle показывает.
Единственный код, который я могу вспомнить, вызывает «подозреваемых»:
final InputStream stream = new URL(feedUrl).openConnection().getInputStream();
Xml.parse(stream, Xml.Encoding.UTF_8, root.getContentHandler());
stream.close();
Я анализирую некоторые удаленные XML-файлы (используя SAX) разных размеров, но не более 1 МБ. Этот код является частью цикла, который анализирует около 5-6 XML-файлов.
Буду признателен за понимание того, что представляют собой "подозреваемые проблемы", если они вызывают утечку памяти и способ ее устранения.