一旦android应用程序终止(由用户或操作系统关闭),泄漏的内存和所有其他内存资源是否被释放?或者我们需要手动完成?在android中跟踪和处理内存问题的最佳方法是什么?
答案 0 :(得分:2)
在应用程序不再使用某些对象的情况下发生内存泄漏,但GC无法将其识别为未使用。
GC由JVM定期自动完成。
Android应用程序只能由操作系统终止。 (至少安全)
如果应用程序被用户关闭,它仍然在后台运行,一旦操作系统决定需要关闭应用程序,要么释放一些内存或应用程序堆栈已满,它将终止应用程序和记忆将被释放。
如果应用程序终止,则释放应用程序使用的所有资源。
99.9%的时间你不需要在android上调用垃圾收集。操作系统会自行处理。手动调用GC可能会造成更多伤害
在某些情况下,内存泄露,但在这些情况下有处理事情的解决方法。
答案 1 :(得分:1)
如果进程终止,那么是,但这不会经常发生。 Android旨在将进程保留在后台,以便在用户想要返回到您的应用时快速启动它们。
您不应该依赖您的应用程序将被终止以修复一些内存泄漏。有一些工具可以修复它们,比如转储HPROF文件和使用内存分析器,也使用弱引用,并使用良好的编程实践 - 主要是不泄漏活动。
[编辑] - 有些资源在进程结束时并不总是被释放,在使用android TTS apis时,我发现在几次app崩溃后我必须重置设备才能使用svox语音。