2013-03-05 47 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