System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實現(xiàn)步驟摘要】
本公開涉及操作系統(tǒng)和車輛領(lǐng)域,尤其涉及一種內(nèi)存溢出的處理方法、裝置、車輛、設備及介質(zhì)。
技術(shù)介紹
1、隨著智能設備的功能增多和數(shù)據(jù)量越來越大,智能設備上的應用所需的運行空間和存儲空間也越來越大。在智能設備的操作系統(tǒng)中運行較多的應用進程時,會出現(xiàn)內(nèi)存溢出(oom,out?of?memory)的現(xiàn)象。內(nèi)存溢出是指有些應用進程中存在無法回收的內(nèi)存或使用的內(nèi)存過多,其它應用進程申請分配內(nèi)存時系統(tǒng)會優(yōu)先強制退出占用內(nèi)存較大的當前進程以減輕系統(tǒng)負擔;或者當前應用進程再次申請內(nèi)存時,因系統(tǒng)無法分配更多內(nèi)存而拋出異常,使得當前應用進程退出。
技術(shù)實現(xiàn)思路
1、在研發(fā)中發(fā)現(xiàn)相關(guān)技術(shù)存在以下技術(shù)問題:目前針對內(nèi)存溢出的處理方案基本都是由內(nèi)核配置各個應用進程的得分策略或進程優(yōu)先級,在內(nèi)存溢出時由內(nèi)核態(tài)進程選擇得分較高或較低、或優(yōu)先級較低的進程進行結(jié)束(kill);然而在上述過程中如果上述內(nèi)核態(tài)進程發(fā)生內(nèi)核錯誤(panic),則會引起系統(tǒng)級別的問題,導致整個系統(tǒng)的運行受影響。
2、為克服相關(guān)技術(shù)中存在的問題,本公開提供一種內(nèi)存溢出的處理方法、裝置、車輛、設備及介質(zhì)。
3、根據(jù)本公開實施例的第一方面,提供一種內(nèi)存溢出的處理方法。上述方法包括:在內(nèi)核態(tài)檢測是否發(fā)生內(nèi)存溢出;響應于檢測到內(nèi)存溢出,將內(nèi)存溢出的處理權(quán)從內(nèi)核的內(nèi)存溢出處理函數(shù)轉(zhuǎn)移到仲裁進程,使得上述仲裁進程進行內(nèi)存溢出的處理;其中,上述仲裁進程為后臺運行的用戶態(tài)進程并具有管控其他進程的權(quán)限。
4、在一些實施例中,
5、在一些實施例中,上述處理權(quán)轉(zhuǎn)移信號用于指示由上述仲裁進程進行上述內(nèi)存溢出的處理,而不再繼續(xù)執(zhí)行上述內(nèi)存溢出處理函數(shù)自帶的默認處理邏輯。
6、在一些實施例中,上述方法還包括:創(chuàng)建用于進行內(nèi)核態(tài)和用戶態(tài)通信的接口對象;上述接口對象包含:用于存放仲裁進程對應的功能開關(guān)狀態(tài)的第一接口對象;用于存放仲裁進程的進程標識的第二接口對象;其中,上述內(nèi)存溢出處理函數(shù)獲取仲裁進程對應的功能開關(guān)狀態(tài),包括:上述內(nèi)存溢出處理函數(shù)從上述第一接口對象中獲取預先配置的仲裁進程對應的功能開關(guān)狀態(tài);上述內(nèi)存溢出處理函數(shù)向上述仲裁進程發(fā)送處理權(quán)轉(zhuǎn)移信號,包括:上述內(nèi)存溢出處理函數(shù)從上述第二接口對象中獲取預先配置的仲裁進程的進程標識;根據(jù)上述進程標識,上述內(nèi)存溢出處理函數(shù)向上述仲裁進程發(fā)送處理權(quán)轉(zhuǎn)移信號。
7、在一些實施例中,上述方法還包括:加載用戶態(tài)仲裁功能配置文件;其中,上述用戶態(tài)仲裁功能配置文件中包含:針對仲裁進程對應的功能開關(guān)狀態(tài)是否開啟進行設置的第一配置信息、針對仲裁進程的進程標識進行設置的第二配置信息和針對內(nèi)存溢出發(fā)生后實施的進程管控策略進行設置的第三配置信息;在啟動并初始化仲裁進程的過程中,解析上述用戶態(tài)仲裁功能配置文件得到上述第一配置信息、上述第二配置信息和上述第三配置信息,將上述第一配置信息和上述第二配置信息寫入至內(nèi)核態(tài)和用戶態(tài)通信的接口對象中,并根據(jù)上述第三配置信息對上述仲裁進程的進程管控策略進行配置。
8、在一些實施例中,上述方法還包括以下至少一種:響應于上述功能開關(guān)狀態(tài)指示上述仲裁進程的功能關(guān)閉,執(zhí)行上述內(nèi)存溢出處理函數(shù)自帶的默認處理邏輯;其中,上述默認處理邏輯是內(nèi)核配置的針對內(nèi)存溢出的處理邏輯;或者,在上述仲裁進程根據(jù)預先配置的進程管控策略得不到目標進程的情況下,上述仲裁進程向上述內(nèi)存溢出處理函數(shù)發(fā)送處理權(quán)退回信號;上述內(nèi)存溢出處理函數(shù)在接收到上述處理權(quán)退回信號后,執(zhí)行上述內(nèi)存溢出處理函數(shù)自帶的默認處理邏輯。
9、在一些實施例中,上述方法還包括:在檢測到上述仲裁進程由于故障或異常導致終止,基于重啟機制,對上述仲裁進程進行至少一次重啟;在上述仲裁進程重啟成功后,上述仲裁進程繼續(xù)執(zhí)行之前的處理任務;在上述仲裁進程基于重啟機制重啟失敗后,上述仲裁進程向上述內(nèi)存溢出處理函數(shù)發(fā)送處理權(quán)退回信號;上述內(nèi)存溢出處理函數(shù)在接收到上述處理權(quán)退回信號后,執(zhí)行上述內(nèi)存溢出處理函數(shù)自帶的默認處理邏輯;或者,在上述仲裁進程基于重啟機制重啟失敗后,在前端顯示界面進行以下信息的提示:上述仲裁進程終止和內(nèi)存溢出處理報錯。
10、在一些實施例中,上述方法應用于linux操作系統(tǒng);在上述linux操作系統(tǒng)中,改造上述內(nèi)存溢出處理函數(shù),包括:通過將上述內(nèi)存溢出處理函數(shù)中具有內(nèi)存溢出的處理權(quán)的結(jié)束進程選擇對象賦值為上述仲裁進程的進程標識,以將內(nèi)存溢出的處理權(quán)從內(nèi)核的內(nèi)存溢出處理函數(shù)轉(zhuǎn)移到上述仲裁進程,使得上述仲裁進程進行內(nèi)存溢出的處理。
11、在一些實施例中,上述方法還包括:在上述linux操作系統(tǒng)的內(nèi)核源碼的主文件中定義第一全局變量和第二全局變量,上述第一全局變量表示上述仲裁進程對應的功能開關(guān)狀態(tài),上述第二全局變量表示上述仲裁進程的進程標識;在上述linux操作系統(tǒng)的proc文件中創(chuàng)建第一接口對象和第二接口對象,上述第一接口對象用于存放上述功能開關(guān)狀態(tài),上述第二接口對象用于存放上述進程標識;其中,在上述功能開關(guān)狀態(tài)指示上述仲裁進程的功能開啟的情況下,執(zhí)行以下步驟:將上述內(nèi)存溢出處理函數(shù)中具有內(nèi)存溢出的處理權(quán)的結(jié)束進程選擇對象賦值為上述仲裁進程的進程標識。
12、根據(jù)本公開實施例的第二方面,提供一種內(nèi)存溢出的處理裝置。上述裝置包括:檢測模塊和處理權(quán)轉(zhuǎn)移模塊。上述檢測模塊用于在內(nèi)核態(tài)檢測是否發(fā)生內(nèi)存溢出。上述處理權(quán)轉(zhuǎn)移模塊用于響應于檢測到內(nèi)存溢出,將內(nèi)存溢出的處理權(quán)從內(nèi)核的內(nèi)存溢出處理函數(shù)轉(zhuǎn)移到仲裁進程,使得上述仲裁進程進行內(nèi)存溢出的處理。其中,上述仲裁進程為后臺運行的用戶態(tài)進程并具有管控其他進程的權(quán)限。
13、在一些實施例中,上述處理權(quán)轉(zhuǎn)移模塊包括:狀態(tài)獲取模塊、信號發(fā)送模塊、信號接收模塊和進程管控模塊。上述狀態(tài)獲取模塊,位于上述內(nèi)存溢出處理函數(shù)中,用于響應于檢測到內(nèi)存溢出,獲取仲裁進程對應的功能開關(guān)狀態(tài)。上述信號發(fā)送模塊,位于上述內(nèi)存溢出處理函數(shù)中,用于響應于上述功能開關(guān)狀態(tài)指示上述仲裁進程的功能開啟,向上述仲裁進程發(fā)送處理權(quán)轉(zhuǎn)移信號。上述信號接收模塊,位于上述仲裁進程中,用于接收上述處理權(quán)轉(zhuǎn)移信號。上述進程管控模塊,位于上述仲裁進程中,用于在接收到上述處理權(quán)轉(zhuǎn)移信號后,根據(jù)預先配置的進程管控策略來確定目標進程,并結(jié)束上述目標進程以釋放對應資源。
14、根據(jù)本公開實施例的第三方面,提供一種車輛,存儲有一組指令集,上述指令集被上述車輛執(zhí)行,以實現(xiàn)本公開第一方面所提供的內(nèi)存溢出的處理方法。
15、根據(jù)本公開實施例的第四方面,提供一種電子設備,包括:處理器;用于存儲上述處理器可執(zhí)行指令的本文檔來自技高網(wǎng)...
【技術(shù)保護點】
1.一種內(nèi)存溢出的處理方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將內(nèi)存溢出的處理權(quán)從內(nèi)存溢出處理函數(shù)轉(zhuǎn)移到仲裁進程,使得所述仲裁進程進行內(nèi)存溢出的處理,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述處理權(quán)轉(zhuǎn)移信號用于指示由所述仲裁進程進行所述內(nèi)存溢出的處理,而不再繼續(xù)執(zhí)行所述內(nèi)存溢出處理函數(shù)自帶的默認處理邏輯。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1-4中任一項所述的方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括以下至少一種:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
8.根據(jù)權(quán)利要求1-4、6或7中任一項所述的方法,其特征在于,所述方法應用于Linux操作系統(tǒng);
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述方法還包括:
10.一種內(nèi)存溢出的處理裝置,其特征在于,包括:
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述處理權(quán)轉(zhuǎn)移模塊包括:狀態(tài)獲取模塊
12.一種車輛,其特征在于,存儲有一組指令集,所述指令集被所述車輛執(zhí)行,以實現(xiàn)所述權(quán)利要求1-9中任一所述的方法。
13.一種電子設備,其特征在于,包括:
14.一種計算機可讀存儲介質(zhì),其上存儲有計算機程序指令,其特征在于,該程序指令被處理器執(zhí)行時,以實現(xiàn)所述權(quán)利要求1-9中任一所述的方法的步驟。
...【技術(shù)特征摘要】
1.一種內(nèi)存溢出的處理方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將內(nèi)存溢出的處理權(quán)從內(nèi)存溢出處理函數(shù)轉(zhuǎn)移到仲裁進程,使得所述仲裁進程進行內(nèi)存溢出的處理,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述處理權(quán)轉(zhuǎn)移信號用于指示由所述仲裁進程進行所述內(nèi)存溢出的處理,而不再繼續(xù)執(zhí)行所述內(nèi)存溢出處理函數(shù)自帶的默認處理邏輯。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1-4中任一項所述的方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括以下至少一種:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
8.根據(jù)權(quán)利要求1-...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:劉新朋,謝寶友,
申請(專利權(quán))人:國科礎(chǔ)石重慶軟件有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。