0

当我停止我的应用程序的一项服务时,内存使用量与服务运行时相同。如果我不启动这项服务,它就不会增加。为什么Android在我的主要活动停止时不释放服务的内存?

4

3 回答 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 回答