当我停止我的应用程序的一项服务时,内存使用量与服务运行时相同。如果我不启动这项服务,它就不会增加。为什么Android在我的主要活动停止时不释放服务的内存?
问问题
78 次
3 回答
1
Android 不会为每个对象分配分配系统内存,包括上下文对象(Activity、Service ...)。
由于每个 android 应用程序都在其DVM上运行, android 会根据操作系统状态、可用内存和其他因素为该 VM 提供特定的内存。
应用程序将使用该内存,如果KVM请求更多内存,操作系统将尝试为其分配更多内存,因此在 linux 进程级别上,您看不到对象分配效果。事实上,我怀疑你能在任何现代虚拟机上看到这一点。
释放也是如此。
看看这里:JVM内存它不是KVM,但它们共享相同的概念。
于 2013-05-11T21:36:38.650 回答
0
垃圾收集器可能会在稍后运行以删除没有引用的对象。它不会在您释放对象后立即发生。
于 2013-05-11T20:21:36.410 回答
0
如果没有更多对对象的引用,GC 最终会释放它。不应出现因内存不足而导致的错误,因为内存不足时会运行 GC。
确保在服务停止时释放对象。
于 2013-05-11T21:25:11.590 回答