我想知道如何以编程方式在Android中释放内存,因为我的布局包含很多视图,当我转到任何Activity时,应用程序停止工作并给我一个内存不足的错误。
So what is the way to release Memory ?
答案 0 :(得分:6)
Android已经定义了如何使用Click here.
可能的原因:
我们遇到内存不足错误的原因有很多。其中一些是:
您正在进行一些持续需要大量内存的操作,并且在某些时候它超出了进程的最大堆内存限制。
您正在泄漏一些内存,即您没有使之前分配的对象符合垃圾收集(GC)的条件。这称为内存泄漏。
您正在处理大型位图并在运行时加载所有这些位图。你必须非常小心地处理大位图,只需加载你需要的大小而不是整个位图,然后进行缩放。
诊断OOM的工具:
在Android中,有一些工具可用于查找内存泄漏,其中一个是MAT(Memory Analyzer Tool)。这可以用作Eclipse的插件或作为独立的工具。
让我们首先安装MAT并将其与Eclipse一起使用,并带有分步指南:
hprof-conv com.example.android.hcgallery.hprof mat.hprof
答案 1 :(得分:1)
你不能释放内存,如果没有使用该对象,那么垃圾收集器的工作就是找到这个对象的引用,然后垃圾收集器才会启动。
问题是你有一个消耗大量内存的lots of nested View
,你可以将视图最小化以在堆中使用更少的内存空间,或者在需要时动态添加视图并在删除时删除其他视图你不需要它来节省内存空间。
答案 2 :(得分:-2)
我使用这个onBackPressed事件,它完全释放我的应用程序进程:
android.os.Process.killProcess(android.os.Process.myPid());
希望有所帮助