本申請(qǐng)涉及數(shù)據(jù)處理,更具體地,涉及一種應(yīng)用程序的垃圾回收方法、裝置、電子設(shè)備以及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、程序執(zhí)行過(guò)程中需要進(jìn)行垃圾回收時(shí),只有在特定的位置停頓下來(lái)開(kāi)始進(jìn)行g(shù)c(garbage?collection,垃圾回收),這些特定位置稱之為安全點(diǎn)(safepoint)。safepoint的選擇很重要,如果太少可能導(dǎo)致gc等待用戶線程執(zhí)行的時(shí)間太長(zhǎng);如果太多,就是太頻繁的執(zhí)行g(shù)c,影響性能。相關(guān)技術(shù)中通過(guò)延遲插入gc安全點(diǎn)相關(guān)代碼,可減輕過(guò)早插入gc安全點(diǎn)代碼對(duì)后續(xù)優(yōu)化帶來(lái)的影響。然而,目前的垃圾回收方法還有待改善。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)?zhí)岢隽艘环N應(yīng)用程序的垃圾回收方法、裝置、電子設(shè)備以及存儲(chǔ)介質(zhì),以改善上述問(wèn)題。
2、第一方面,本申請(qǐng)實(shí)施例提供了一種應(yīng)用程序的垃圾回收方法,應(yīng)用于電子設(shè)備,所述方法包括:在編譯應(yīng)用程序的過(guò)程中,獲取gc安全點(diǎn),所述應(yīng)用程序的編譯器包括llvm編譯器框架;獲取與所述gc安全點(diǎn)對(duì)應(yīng)的gc?map信息,所述gc?map信息用于追蹤待回收的對(duì)象;獲取所述gc安全點(diǎn)的代碼類型配置;基于所述代碼類型配置獲取所述gc安全點(diǎn)的相關(guān)代碼類型,并在對(duì)所述llvm編譯器框架進(jìn)行優(yōu)化后將所述相關(guān)代碼類型對(duì)應(yīng)的gc安全點(diǎn)相關(guān)代碼插入所述gc安全點(diǎn);將所述gc安全點(diǎn)相關(guān)代碼與所述gc?map信息進(jìn)行合并,使所述gc安全點(diǎn)相關(guān)代碼與所述gc?map信息對(duì)應(yīng)。
3、第二方面,本申請(qǐng)實(shí)施例提供了一種應(yīng)用程序的垃圾回收裝置,運(yùn)行于電子設(shè)備,所述裝置包括:安全點(diǎn)獲取模塊,用于在編譯應(yīng)用程序的過(guò)程中,獲取gc安全點(diǎn),所述應(yīng)用程序的編譯器包括llvm編譯器框架;追蹤信息獲取模塊,用于獲取與所述gc安全點(diǎn)對(duì)應(yīng)的gc?map信息,所述gc?map信息用于追蹤待回收的對(duì)象;配置信息獲取模塊,用于獲取所述gc安全點(diǎn)的代碼類型配置;安全點(diǎn)插入模塊,用于基于所述代碼類型配置獲取所述gc安全點(diǎn)的相關(guān)代碼類型,并在對(duì)所述llvm編譯器框架進(jìn)行優(yōu)化后將所述相關(guān)代碼類型對(duì)應(yīng)的gc安全點(diǎn)相關(guān)代碼插入所述gc安全點(diǎn);合并模塊,用于將所述gc安全點(diǎn)相關(guān)代碼與所述gc?map信息進(jìn)行合并,使所述gc安全點(diǎn)相關(guān)代碼與所述gc?map信息對(duì)應(yīng)。
4、第三方面,本申請(qǐng)?zhí)峁┝艘环N電子設(shè)備,包括一個(gè)或多個(gè)處理器以及存儲(chǔ)器;一個(gè)或多個(gè)程序被存儲(chǔ)在所述存儲(chǔ)器中并被配置為由所述一個(gè)或多個(gè)處理器執(zhí)行,所述一個(gè)或多個(gè)程序配置用于執(zhí)行上述第一方面的方法。
5、第四方面,本申請(qǐng)?zhí)峁┝艘环N計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有程序代碼,其中,在所述程序代碼運(yùn)行時(shí)執(zhí)行上述第一方面的方法。
6、本申請(qǐng)?zhí)峁┑囊环N應(yīng)用程序的垃圾回收方法、裝置、電子設(shè)備以及存儲(chǔ)介質(zhì),本方法通過(guò)獲取待處理應(yīng)用程序的gc安全點(diǎn);獲取與所述gc安全點(diǎn)對(duì)應(yīng)的gc?map信息,所述gcmap信息用于追蹤待回收的對(duì)象;獲取所述gc安全點(diǎn)的代碼類型配置;基于所述代碼類型配置獲取所述gc安全點(diǎn)的相關(guān)代碼類型,并將所述相關(guān)代碼類型對(duì)應(yīng)的gc安全點(diǎn)相關(guān)代碼插入所述gc安全點(diǎn);將所述gc安全點(diǎn)相關(guān)代碼與所述gc?map信息進(jìn)行合并,使所述gc安全點(diǎn)相關(guān)代碼與所述gc?map信息對(duì)應(yīng)。從而通過(guò)上述方式實(shí)現(xiàn)了通過(guò)將gc安全點(diǎn)相關(guān)代碼與用于追蹤待回收的對(duì)象的gc?map信息進(jìn)行合并,可以實(shí)現(xiàn)準(zhǔn)確的定位需要進(jìn)行垃圾回收的安全點(diǎn),從而減少不必要的插入,進(jìn)而提升編譯代碼的質(zhì)量。
1.一種應(yīng)用程序的垃圾回收方法,其特征在于,應(yīng)用于電子設(shè)備,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取與所述gc安全點(diǎn)對(duì)應(yīng)的gc?map信息,包括:
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述基于所述代碼類型配置獲取所述gc安全點(diǎn)的相關(guān)代碼類型,包括:
4.根據(jù)權(quán)利要求1-3任一所述的方法,其特征在于,所述在編譯應(yīng)用程序的過(guò)程中,獲取gc安全點(diǎn)之前,所述方法還包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將顯式gc安全點(diǎn)相關(guān)代碼和隱式安全點(diǎn)相關(guān)代碼均以函數(shù)的格式寫(xiě)入所述中間表示的文件之后,所述方法還包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述在所述函數(shù)的入口或循環(huán)代碼中插入與gc安全點(diǎn)對(duì)應(yīng)的gc?map信息之后,所述方法還包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述獲取待處理應(yīng)用程序的gc安全點(diǎn),包括:
8.一種應(yīng)用程序的垃圾回收裝置,其特征在于,運(yùn)行于電子設(shè)備,所述裝置包括:
9.一種電子設(shè)備,其特征在于,包括一個(gè)或多個(gè)處理器以及存儲(chǔ)器;
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有程序代碼,其中,在所述程序代碼被處理器運(yùn)行時(shí)執(zhí)行權(quán)利要求1-7任一所述的方法。