2013-03-05 100 views
3

我的Android“智能电视盒”有一个磁盘连接,其中安装了一个运行各种服务器进程(ntp,mpd,lighttpd,...)的小型Debian发行版。问题是,即使我有很多交换空间,当有很多活动时(即机器交换更多时),我的一些守护进程往往会“死亡”。我不知道什么是根本原因,但它听起来像是某种Android OOM系统可能决定杀死这些进程(可能是因为它假定没有交换)。如何阻止android杀死我的守护进程

如何验证这确实是这种情况?

如果是这样的话,即使交换中仍有足够的空间,hwo是否可以阻止内核杀死进程?

+0

Android保留随时杀死任何服务的权利。它还会设置每个应用内存限制,即使您有剩余的内存,也不会让应用覆盖它。所以你需要编码你的服务,假设他们可以在任何时候无故丧命。一个窍门是让你的服务onCreate调用startService本身 - 出于某种原因,Android往往会每隔8个小时左右杀死所有东西,这就解决了这个问题(尽管如果你在做某件事情的时候可能会丢掉它)。 – 2013-03-05 21:51:37

+1

这些是真的本地Linux守护进程“死”,而不是SDK应用程序? – CommonsWare 2013-03-05 21:51:42

+0

对,这些是对Android一无所知的Debian守护进程。 – Stefan 2013-03-05 21:54:45

回答

3

你可以调整内存杀手写入/sys/module/lowmemorykiller/parameters。作为一个内核杀手我不认为它区分Android或本地进程,但我可能是错的。

更多详细信息可查询here

+1

我在启动脚本中加入了'echo 1,2,3,4,5,6>/sys/module/lowmemorykiller/parameters/minfree',问题没有了,谢谢。 – Stefan 2013-10-31 14:31:38