I'm using Eclipse's Memory Analyzer to analyze a heap dump for my app, since I think I'm getting a memory leak somewhere. I'm not exactly sure what to look for, but the Leak Suspect report in MAT is showing 4 "problem suspects", which are:
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.
The last one I'm guessing is that I'm using too many Strings? The others I have no clue. I'm not using any encryption, so I don't know why BouncyCastle is showing.
The only code I can think of that is causing the "suspects" is this:
final InputStream stream = new URL(feedUrl).openConnection().getInputStream();
Xml.parse(stream, Xml.Encoding.UTF_8, root.getContentHandler());
stream.close();
I'm parsing some remote XML files (using SAX), of varying sizes, but nothing over 1MB. This code is part of a loop that parses about 5-6 xml files.
Any insight as to what the "problems suspects" are, if they are causing a memory leak and a way to fix it, would be GREATLY appreciated.