linux oom killer 為什么我的程序會(huì)被Linux自動(dòng)KILL掉?
為什么我的程序會(huì)被Linux自動(dòng)KILL掉?它促進(jìn)了oom。Linux有一個(gè)叫做oom killer(內(nèi)存不足)的特性,它與內(nèi)存溢出有關(guān)。當(dāng)內(nèi)存耗盡時(shí),問題就會(huì)出現(xiàn)。在linux2.6中。內(nèi)核中,當(dāng)函
為什么我的程序會(huì)被Linux自動(dòng)KILL掉?
它促進(jìn)了oom。Linux有一個(gè)叫做oom killer(內(nèi)存不足)的特性,它與內(nèi)存溢出有關(guān)。當(dāng)內(nèi)存耗盡時(shí),問題就會(huì)出現(xiàn)。在linux2.6中。內(nèi)核中,當(dāng)函數(shù)開啟時(shí),當(dāng)內(nèi)存耗盡時(shí),會(huì)根據(jù)一定的值計(jì)算出合適的用戶空間進(jìn)程進(jìn)行殺戮,從而釋放出更多的內(nèi)存,保證整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行。
linux內(nèi)存溢出怎么解決方案?
內(nèi)存溢出是指當(dāng)程序申請(qǐng)內(nèi)存時(shí),內(nèi)存空間不足,內(nèi)存不足。例如,如果應(yīng)用了整數(shù),但只能為其保存long,這就是內(nèi)存溢出。
當(dāng)內(nèi)存嚴(yán)重不足時(shí),內(nèi)核有兩種選擇:1。直接恐慌。殺死一些進(jìn)程并釋放一些內(nèi)核。
每個(gè)進(jìn)程都有一個(gè)oomuScore(/proc/PID/oom)uScore)屬性,oom killer會(huì)殺死oomuScore較大的進(jìn)程,當(dāng)oomuScore為0時(shí),內(nèi)核不允許殺死進(jìn)程。
過度設(shè)置/proc/PID/OOM_uu2;Adj可以更改OOM_2;score,OOM_2;Adj的范圍是[-17,15],當(dāng)OOM_2;Adj=-17時(shí),OOM_2;score將更改為0。
oom_uadj可以從15調(diào)整到-16,其中15是最大的-16是最小的-17是禁止使用oom。oom_uuScore計(jì)算為2的n次方,其中n是進(jìn)程調(diào)整值的oom,因此oom_uuScore越高,內(nèi)核將殺死的優(yōu)先級(jí)越高。
總之,您可以使用echo 0>/proc/PID/oomuadj命令來防止進(jìn)程成為oomKillers kill。
涉及的參數(shù)如下:
](1),panicuuuonuoom為OO時(shí),是否為panic?當(dāng)值為0時(shí),oom期間將調(diào)用oom killer。在大多數(shù)情況下,導(dǎo)致oom的進(jìn)程將被終止,然后系統(tǒng)將恢復(fù)。當(dāng)值為1時(shí),如果oom后有mempolicy/cpuses的進(jìn)程限制,這些節(jié)點(diǎn)導(dǎo)致內(nèi)存問題,oom將停止,Killer將殺死其中一個(gè)節(jié)點(diǎn),系統(tǒng)將恢復(fù)。當(dāng)值為2時(shí),oom后面將跟有panic](2),oomkilluuuuu分配uuuu任務(wù)決定oom殺手在oom中時(shí)將殺死什么。當(dāng)它不是0時(shí),它將掃描進(jìn)程隊(duì)列,然后殺死可能導(dǎo)致內(nèi)存溢出的進(jìn)程,即占用最大內(nèi)存的進(jìn)程。但是當(dāng)設(shè)置為0時(shí),只殺死引起oom的進(jìn)程,避免掃描進(jìn)程隊(duì)列,但釋放的內(nèi)存有限
(3)oomdumpTasks觸發(fā)oom killer時(shí),輸出進(jìn)程信息,包括PID、uid、TGID、VM、RSS、CPU等。,默認(rèn)設(shè)置為0
怎么將一個(gè)app設(shè)置為持久app,不被lowmemorykill關(guān)閉?
應(yīng)用程序持久[solution]1清單.xml向中的應(yīng)用程序添加屬性android:持久=“正確”2。使用此應(yīng)用程序的平臺(tái)簽名3。將其置于系統(tǒng)/應(yīng)用程序下注意:應(yīng)用程序設(shè)置為持久后,將很難被低內(nèi)存終止(OOM)Adj=-12)終止,請(qǐng)?jiān)谠O(shè)置前確認(rèn)是否有必要,否則會(huì)浪費(fèi)內(nèi)存。