0

故事是这样的:我从 Eclipse 运行我的应用程序,假设它在任务管理器中使用 20 MB 的 RAM。
然后我使用“后退按钮”关闭我的应用程序。
我签入任务管理器并处理我的应用程序已关闭。
现在我再次从手机运行我的应用程序,但现在它将使用 32 MB。
我关闭我的应用程序并从手机再次运行它,它将使用 45 MB 的 RAM,并且每次重新启动都会继续。

每次启动都会增加约 12 MB。
如果我从 Eclipse 运行我的应用程序,它将重置回 20 MB。

我正在使用MyApp存储一些非静态数据和 SQLiteDatabase:

public class MyApp extends Application {

}

我可以看到,即使我用 back btn 关闭我的应用程序,我的应用程序也将保持在活动进程中。

4

2 回答 2

3

您应该使用 Eclipse Memory Analyzer Tool (MAT) - 这显然是内存泄漏。您需要从 DDMS 获取堆转储,使用 sdk 中的 hprof-conv 工具对其进行转换并将其加载到 MAT 中。

查看官方 Android 开发者博客上的这篇博文

于 2013-07-26T11:53:41.260 回答
1

尝试调用android.os.Process.killProcess(android.os.Process.myPid());主要活动的 onDestroy 方法。

于 2013-07-26T11:50:50.947 回答