Android 应用程序关闭时内存无法释放
故事是这样的:我从Eclipse运行我的应用程序,假设它在TaskManager中使用了20MB的RAM。Android 应用程序关闭时内存无法释放,android,adt,android-memory,android-debug,Android,Adt,Android Memory,Android Debug,故事是这样的:我从Eclipse运行我的应用程序,假设它在TaskManager中使用了20MB的RAM。 然后我使用“后退按钮”关闭我的应用程序。 我签入任务管理器并处理我的应用程序是否已关闭。 现在我再次从手机上运行我的应用程序,但现在它将使用32 MB。 我关闭我的应用程序并再次从手机上运行,它将使用45 MB的RAM,每次重启都会继续 每次启动都会增加~12 MB。 如果我从Eclipse运行我的应用程序,它将重置回20MB。 我正在使用MyApp存储一些非静态数据和一个SQLite数据
然后我使用“后退按钮”关闭我的应用程序。
我签入任务管理器并处理我的应用程序是否已关闭。
现在我再次从手机上运行我的应用程序,但现在它将使用32 MB。
我关闭我的应用程序并再次从手机上运行,它将使用45 MB的RAM,每次重启都会继续 每次启动都会增加~12 MB。
如果我从Eclipse运行我的应用程序,它将重置回20MB。 我正在使用MyApp存储一些非静态数据和一个SQLite数据库:
public class MyApp extends Application {
}
我可以看到,即使我用back btn关闭我的应用程序,我的应用程序仍将处于活动进程中。尝试调用
android.os.Process.killProcess(android.os.Process.myPid())代码>在主活动的onDestroy方法上。尝试调用android.os.Process.killProcess(android.os.Process.myPid())代码>在主活动的onDestroy方法上。您应该使用Eclipse内存分析器工具(MAT)-这显然是内存泄漏。您需要从DDMS获取堆转储,使用sdk中的hprof conv工具将其转换并加载到MAT中
查看Android开发者的官方博客。您应该使用Eclipse内存分析器工具(MAT)-这显然是内存泄漏。您需要从DDMS获取堆转储,使用sdk中的hprof conv工具将其转换并加载到MAT中
查看Android开发者的官方博客。它可以工作,但你能告诉我为什么可以工作。Android保留了一些关于你的应用程序的数据/说明,以便在很短的时间内再次打开时快速启动,使用该命令,您可以确保不会保存指令和额外数据。这应该被视为最后的手段!真正的问题是内存泄漏,应该予以修复。我只需要在自定义布局引擎中使用它,这些引擎要么具有静态上下文,要么具有原生openGL视图。是的,Phil是对的,这是一个快速而肮脏的解决方案,不应该在大型项目中使用,因为它可能会在下次启动应用程序时导致流程或数据损坏。它可以工作,但您能否告诉我它工作的原因。Android保留了一些关于您的应用程序的数据/说明,以便在关闭后再次打开时快速启动interval,使用该命令可以确保不会保存指令和额外数据。这应该是最后的选择!真正的问题是内存泄漏,应该予以修复。我唯一需要使用它的时候是针对具有静态上下文或本机openGL视图的自定义布局引擎。是的,Phil是对的,这是一个快速而肮脏的解决方案,不应该在大型项目中使用,因为它可能会在下次启动应用程序时导致流程或数据损坏。