1

我已经面对这个问题已经有一段时间了。我有一个通过 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

有人可以在这里提供一些见解吗?初步看来,这似乎是一些与内存不足相关的问题?

4

2 回答 2

0

我会说您的程序中可能存在内存泄漏。您需要确保在使用完所有资源后释放所有资源,尤其是媒体播放器、网络连接等。

Android 将自行停止它认为不再需要的服务。为了避免系统关闭您的服务或进程,您需要确保您没有限制您拥有的任何设备上的内存。如果您在 AVM 中运行它,我会尝试修改设置,以便设备拥有更多内存。如果您的程序在增加虚拟设备的内存时没有问题,您需要仔细查看您可以释放哪些资源以及何时释放。

于 2012-04-11T19:29:12.787 回答
0

是的..它与内存问题有关.. Ashmem 是一种共享内存机制,当内存压力变高时,它能够丢弃部分或全部内容..我认为您正在使用很多资源..而不是释放它们..

于 2012-04-11T18:56:20.373 回答