本申請屬于計算機,具體涉及一種內(nèi)存回收方法、裝置、電子設備及計算機可讀存儲介質(zhì)。
背景技術:
1、目前,安卓系統(tǒng)用lmkd(low?memory?killer?daemon,低內(nèi)存終止守護進程)來監(jiān)控運行中系統(tǒng)內(nèi)存的狀態(tài),通過終止最不必要的進程來應對內(nèi)存壓力較高的問題,使系統(tǒng)可以正常運行。然而,在同一個服務器上運行有多個安卓實例時,由于每個安卓實例都有自己的lmkd,因此在系統(tǒng)內(nèi)存壓力過大時,多個安卓實例的lmkd均會通過殺死自身實例中的進程來進行內(nèi)存回收,這種情況下,會導致內(nèi)存過度回收,對用戶的正常使用造成影響。
技術實現(xiàn)思路
1、本申請實施例提供一種內(nèi)存回收方法、裝置、電子設備及計算機可讀存儲介質(zhì),能夠解決相關技術在服務器上運行有多個安卓實例的情況下,難以避免內(nèi)存過度回收的問題。
2、第一方面,本申請實施例提供了一種內(nèi)存回收方法,應用于服務器,所述服務器的內(nèi)核上運行有多個安卓實例,該方法包括:
3、通過目標安卓實例接收內(nèi)核壓力失速信息psi模塊上報的內(nèi)存壓力事件,所述內(nèi)存壓力事件中包括壓力等級;
4、讀取內(nèi)核狀態(tài)模塊的狀態(tài)值,所述狀態(tài)值包括預設的不可用值或者所述psi模塊預先發(fā)送的所述壓力等級;
5、在所述狀態(tài)值為所述壓力等級的情況下,根據(jù)所述內(nèi)存壓力事件,對自身進程進行內(nèi)存回收,并修改所述內(nèi)核狀態(tài)模塊的狀態(tài)值為所述預設的不可用值。
6、第二方面,本申請實施例提供了一種內(nèi)存回收裝置,應用于服務器,所述服務器的內(nèi)核上運行有多個安卓實例,該裝置包括:
7、接收模塊,用于通過目標安卓實例接收內(nèi)核壓力失速信息psi模塊上報的內(nèi)存壓力事件,所述內(nèi)存壓力事件中包括壓力等級;
8、讀取模塊,用于讀取內(nèi)核狀態(tài)模塊的狀態(tài)值,所述狀態(tài)值包括預設的不可用值或者所述psi模塊預先發(fā)送的所述壓力等級;
9、內(nèi)存回收模塊,用于在所述狀態(tài)值為所述壓力等級的情況下,根據(jù)所述內(nèi)存壓力事件,對自身進程進行內(nèi)存回收,并修改所述內(nèi)核狀態(tài)模塊的狀態(tài)值為所述預設的不可用值。
10、第三方面,本申請實施例提供了一種內(nèi)存回收電子設備,該電子設備包括處理器;以及被安排成存儲計算機可執(zhí)行指令的存儲器,所述計算機可執(zhí)行指令被配置由所述處理器執(zhí)行,所述計算機可執(zhí)行指令被所述處理器執(zhí)行以實現(xiàn)如第一方面所述的內(nèi)存回收方法的步驟。
11、第四方面,本申請實施例提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)用于存儲計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被處理器執(zhí)行時實現(xiàn)如第一方面所述的內(nèi)存回收方法的步驟。
12、第五方面,本申請實施例提供了一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如第一方面所述的內(nèi)存回收方法的步驟。
13、第六方面,本申請實施例提供了一種芯片,所述芯片包括處理器和通信接口,所述通信接口和所述處理器耦合,所述處理器用于運行可執(zhí)行指令,實現(xiàn)如第一方面所述的內(nèi)存回收方法。
14、在本申請實施例中,針對服務器的內(nèi)核上運行有多個安卓實例的應用場景,能夠通過目標安卓實例接收內(nèi)核壓力失速信息psi模塊上報的內(nèi)存壓力事件,內(nèi)存壓力事件中包括壓力等級,并讀取內(nèi)核狀態(tài)模塊的狀態(tài)值,狀態(tài)值包括預設的不可用值或者psi模塊預先發(fā)送的壓力等級,從而在內(nèi)核狀態(tài)模塊的狀態(tài)值為壓力等級的情況下,根據(jù)內(nèi)存壓力事件,對自身進程進行內(nèi)存回收,并修改內(nèi)核狀態(tài)模塊的狀態(tài)值為預設的不可用值??梢姡摷夹g方案中,在服務器內(nèi)核psi模塊上報內(nèi)存壓力事件時,能夠僅通過一個安卓實例去響應該內(nèi)存壓力事件,并結(jié)合內(nèi)核狀態(tài)模塊的狀態(tài)值,在內(nèi)核狀態(tài)模塊中的狀態(tài)值與內(nèi)存壓力事件中的壓力等級一致時,觸發(fā)安卓實例回收內(nèi)存,以緩解服務器的內(nèi)存壓力。并且,在目標安卓實例回收內(nèi)存之后,能夠修改內(nèi)核狀態(tài)模塊的狀態(tài)值,有效避免了運行在該服務器內(nèi)核上的其他安卓實例對該內(nèi)存壓力事件進行響應,從而再次進行內(nèi)存回收,因此避免了內(nèi)核上運行的多個安卓實例對內(nèi)存壓力事件的過度響應而造成內(nèi)存過度查殺的情況發(fā)生,從而避免了內(nèi)存壓力事件對其他安卓實例的運行造成影響,降低了內(nèi)存回收過程中的用戶感知。
1.一種內(nèi)存回收方法,其特征在于,應用于服務器,所述服務器的內(nèi)核上運行有多個安卓實例,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述通過目標安卓實例接收內(nèi)核壓力失速信息psi模塊上報的內(nèi)存壓力事件之前,所述方法還包括:
3.根據(jù)權利要求2所述的方法,其特征在于,還包括:
4.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括:
5.根據(jù)權利要求1所述的方法,其特征在于,所述通過目標安卓實例接收內(nèi)核壓力失速信息psi模塊上報的內(nèi)存壓力事件之前,所述方法還包括:
6.一種內(nèi)存回收裝置,其特征在于,應用于服務器,所述服務器的內(nèi)核上運行有多個安卓實例,所述裝置包括:
7.根據(jù)權利要求6所述的裝置,其特征在于,所述裝置還包括:
8.一種內(nèi)存回收電子設備,其特征在于,包括:
9.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)用于存儲計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被處理器執(zhí)行時實現(xiàn)如權利要求1-5任一項所述的內(nèi)存回收方法。
10.一種計算機程序產(chǎn)品,其特征在于,包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)權利要求1-5任一項所述的內(nèi)存回收方法。