0

我的应用程序存在重大问题。当我运行它并选择某个活动时,屏幕变黑并且基本上冻结了。我在 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>"
4

1 回答 1

0

首先,您应该检查 SQLiteDatabase 游标是否在不使用时关闭,尤其是在遇到异常后。我认为你应该长期观察你“相信”的这些问题。因为 MAT 只是推测这些。你必须有证据表明某些对象占用了很大的内存导致你的应用程序被系统杀死。否则,你应该“搜索”android 著名的内存泄漏问题用google找个线索。</p>

祝你好运!</p>

于 2012-07-31T01:49:43.870 回答