我的应用程序存在重大问题。当我运行它并选择某个活动时,屏幕变黑并且它基本上冻结了。我在logcat中得到了一长串GC消息。我下载了MAT并让它分析堆以找到内存泄漏。我的问题是我是新手,我不知道它在哪里告诉我泄密。
以下是它给我的三个。任何人都可以向我解释如何解决这些问题?我一直在疯狂搜索谷歌,似乎无法找到任何帮助。
问题1:
The class "android.database.sqlite.SQLiteDatabase$ActiveDatabases", loaded by "<system class loader>", occupies 652,048 (20.70%) bytes. The memory is accumulated in one instance of "java.util.HashMap$HashMapEntry[]" loaded by "<system class loader>".
问题2:
6,831 instances of "java.lang.String", loaded by "<system class loader>" occupy 456,472 (14.49%) bytes.
问题3:
127 instances of "org.bouncycastle.jce.provider.X509CertificateObject", loaded by "<system class loader>" occupy 451,280 (14.32%) bytes. These instances are referenced from one instance of "java.util.Hashtable$HashtableEntry[]", loaded by "<system class loader>"
答案 0 :(得分:0)
首先,如果在不使用时关闭,则应检查SQLiteDatabase游标,尤其是遇到异常后。 我认为你应该长时间观察你'相信'这些问题。因为MAT只猜想这些。我必须有证据证明某些物体占用大量内存会导致你的应用被系统杀死。否则,你应该'搜索'android着名谷歌的内存泄漏问题得到线索。
祝你好运!