我现在已经面对这个问题很长一段时间了。我有一个通过AIDL连接到Android远程服务的应用程序。有时,我看到服务重新启动时使用类似的日志: -
04-11 23:52:35.225: E/dalvikvm-gc(21682): Could not mmap 3723264-byte ashmem region 'dalvik-mark-stack'
04-11 23:52:35.225: E/dalvikvm-heap(21682): dvmHeapBeginMarkStep failed; aborting
04-11 23:52:35.225: E/dalvikvm(21682): VM aborting
04-11 23:54:53.535: I/dalvikvm(21682): threadid=4: reacting to signal 3
有人能在这里提供一些见解吗? 首先,它似乎可能是一些与记忆不相关的问题?
答案 0 :(得分:0)
是..它与内存问题有关.. Ashmem是一种共享内存机制,能够在内存压力过高时丢弃部分或全部内容 ..我认为您正在使用许多资源..而不是释放它们..
答案 1 :(得分:0)
我会说你的程序可能有内存泄漏。您需要确保在完成所有资源后释放所有资源,特别是媒体播放器,网络连接等。
Android将自行停止它认为不再需要的服务。为了避免系统关闭您的服务或进程,您需要确保不会在任何设备上限制内存。如果你在AVM中运行它,我会尝试修改设置,以便设备有更多的内存。如果您的程序在虚拟设备的内存增加时没有问题,您需要仔细查看可以释放的资源以及何时释放。