本技術(shù)實(shí)施例涉及終端,尤其涉及一種垃圾回收方法、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、垃圾回收(garbage?collection,gc)是一種內(nèi)存管理機(jī)制??梢岳斫鉃椋?dāng)一些內(nèi)存對(duì)象不再被需要時(shí),就刪除這些內(nèi)存對(duì)象,以釋放這些內(nèi)存對(duì)象占用的內(nèi)存空間,這種存儲(chǔ)資源管理機(jī)制就稱為垃圾回收。
2、目前,電子設(shè)備的內(nèi)存空間可以分為第一分區(qū)和第二分區(qū),內(nèi)存對(duì)象在第二分區(qū)上,在電子設(shè)備執(zhí)行g(shù)c處理的過程中,電子設(shè)備將符合預(yù)設(shè)條件的內(nèi)存對(duì)象從第二分區(qū)復(fù)制到第一分區(qū),并清空第二分區(qū)。這樣,未符合預(yù)設(shè)條件的內(nèi)存對(duì)象就被刪除,也就是垃圾內(nèi)存對(duì)象就被刪除。
3、現(xiàn)階段,如何提高電子設(shè)備在執(zhí)行g(shù)c處理之后電子設(shè)備使用內(nèi)存對(duì)象的效率是一個(gè)有待解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本技術(shù)實(shí)施例提供一種垃圾回收方法、電子設(shè)備及存儲(chǔ)介質(zhì),在該方法中,電子設(shè)備使用頻繁程度相近的內(nèi)存對(duì)象,這些內(nèi)存對(duì)象在gc處理后,在第一分區(qū)上的位置也是接近的,由此可以提高內(nèi)存對(duì)象的局部性,那么就可以提升電子設(shè)備使用內(nèi)存對(duì)象的效率,提高電子設(shè)備的性能。
2、為達(dá)到上述目的,本技術(shù)的實(shí)施例采用如下技術(shù)方案:
3、第一方面,本技術(shù)實(shí)施例提供一種垃圾回收方法,該方法可以應(yīng)用于如,手機(jī)、平板電腦等電子設(shè)備,上述電子設(shè)備的內(nèi)存空間包括第一分區(qū)和第二分區(qū),第一分區(qū)包括第一子分區(qū)和第二子分區(qū),第一子分區(qū)的內(nèi)存地址連續(xù),第一分區(qū)和第二分區(qū)不同,第一子分區(qū)與第二子分區(qū)不同。上述方法包括:在目標(biāo)應(yīng)用啟動(dòng)后,若目標(biāo)應(yīng)用占用的內(nèi)存大小大于或等于內(nèi)存閾值,則電子設(shè)備基于熱點(diǎn)信息集合對(duì)目標(biāo)應(yīng)用對(duì)應(yīng)的內(nèi)存對(duì)象執(zhí)行垃圾回收gc處理;熱點(diǎn)信息集合包括多個(gè)熱點(diǎn)信息,多個(gè)熱點(diǎn)信息與多個(gè)所述內(nèi)存對(duì)象一一對(duì)應(yīng),熱點(diǎn)信息指示目標(biāo)應(yīng)用使用熱點(diǎn)信息對(duì)應(yīng)的內(nèi)存對(duì)象的頻繁程度。其中,上述gc處理包括:若內(nèi)存對(duì)象符合預(yù)設(shè)條件,則電子設(shè)備將內(nèi)存對(duì)象從第二分區(qū)復(fù)制到第一分區(qū);其中,第一內(nèi)存對(duì)象被復(fù)制到第一子分區(qū),第二內(nèi)存對(duì)象被復(fù)制到第二子分區(qū);目標(biāo)應(yīng)用使用第一內(nèi)存對(duì)象的頻繁程度高于目標(biāo)應(yīng)用使用第二內(nèi)存對(duì)象的頻繁程度。若內(nèi)存對(duì)象未符合預(yù)設(shè)條件,則電子設(shè)備將內(nèi)存對(duì)象從第二分區(qū)刪除。以及,內(nèi)存對(duì)象符合預(yù)設(shè)條件可以理解為內(nèi)存對(duì)象通過可達(dá)性測(cè)試,內(nèi)存對(duì)象不符合預(yù)設(shè)條件可以理解為內(nèi)存對(duì)象未通過可達(dá)性測(cè)試。
4、在上述方法中,由于在對(duì)目標(biāo)應(yīng)用對(duì)應(yīng)的內(nèi)存對(duì)象執(zhí)行g(shù)c處理后,第一內(nèi)存對(duì)象與第二內(nèi)存對(duì)象在電子設(shè)備的內(nèi)存空間的不同分區(qū),如,第一內(nèi)存對(duì)象在第一子分區(qū),第二內(nèi)存對(duì)象在第二子分區(qū);并且目標(biāo)應(yīng)用使用第一內(nèi)存對(duì)象的頻繁程度高于目標(biāo)應(yīng)用使用第二內(nèi)存對(duì)象的頻繁程度。也就是說,目標(biāo)應(yīng)用使用的頻繁程度高的內(nèi)存對(duì)象是在第一子分區(qū)上的。同時(shí)由于第一子分區(qū)的內(nèi)存地址是連續(xù)的,那么第一子分區(qū)上的內(nèi)存對(duì)象的位置是接近的??梢?,通過上述方法可以將目標(biāo)應(yīng)用使用的頻繁程度高的內(nèi)存對(duì)象集中在第一子分區(qū)上,由此,就可以提高內(nèi)存對(duì)象的局部性,那么就可以提升電子設(shè)備使用內(nèi)存對(duì)象的效率,提高電子設(shè)備的性能。
5、在第一方面的一種可能的設(shè)計(jì)中,上述電子設(shè)備獲取熱點(diǎn)信息集合,包括:電子設(shè)備獲取針對(duì)目標(biāo)內(nèi)存對(duì)象的指令,基于針對(duì)目標(biāo)內(nèi)存對(duì)象的指令得到目標(biāo)內(nèi)存對(duì)象對(duì)應(yīng)的目標(biāo)熱點(diǎn)信息,目標(biāo)內(nèi)存對(duì)象是多個(gè)內(nèi)存對(duì)象中的任一個(gè)。接下來,電子設(shè)備將目標(biāo)熱點(diǎn)信息寫入熱點(diǎn)信息集合。
6、在這種設(shè)計(jì)中,電子設(shè)備可以根據(jù)針對(duì)目標(biāo)內(nèi)存對(duì)象的指令準(zhǔn)確地得到指示目標(biāo)應(yīng)用使用目標(biāo)內(nèi)存對(duì)象的頻繁程度的目標(biāo)熱點(diǎn)信息。
7、在第一方面的另一種可能的設(shè)計(jì)中,上述針對(duì)目標(biāo)內(nèi)存對(duì)象的指令包括目標(biāo)內(nèi)存對(duì)象的地址。以及,上述電子設(shè)備將目標(biāo)熱點(diǎn)信息寫入熱點(diǎn)信息集合,包括:電子設(shè)備從針對(duì)目標(biāo)內(nèi)存對(duì)象的指令中提取目標(biāo)內(nèi)存對(duì)象的地址。接下來,電子設(shè)備根據(jù)目標(biāo)內(nèi)存對(duì)象的地址得到目標(biāo)熱點(diǎn)信息在熱點(diǎn)信息集合中的位置。之后,電子設(shè)備將目標(biāo)熱點(diǎn)信息寫入目標(biāo)熱點(diǎn)信息在熱點(diǎn)信息集合中的位置。
8、在第一方面的又一種可能的設(shè)計(jì)中,上述電子設(shè)備根據(jù)目標(biāo)內(nèi)存對(duì)象的地址得到目標(biāo)熱點(diǎn)信息在熱點(diǎn)信息集合中的位置,包括:電子設(shè)備根據(jù)目標(biāo)內(nèi)存對(duì)象的地址得到偏移量。之后,電子設(shè)備基于偏移量與熱點(diǎn)信息集合的地址得到目標(biāo)熱點(diǎn)信息的地址。以及,上述電子設(shè)備將目標(biāo)熱點(diǎn)信息寫入目標(biāo)熱點(diǎn)信息在熱點(diǎn)信息集合中的位置,包括:電子設(shè)備將目標(biāo)熱點(diǎn)信息寫入目標(biāo)熱點(diǎn)信息的地址。
9、在這種設(shè)計(jì)中,電子設(shè)備可以通過目標(biāo)熱點(diǎn)信息的地址將目標(biāo)熱點(diǎn)信息寫入熱點(diǎn)信息集合。
10、在第一方面的另一種可能的設(shè)計(jì)中,上述針對(duì)目標(biāo)內(nèi)存對(duì)象的指令包括:針對(duì)目標(biāo)內(nèi)存對(duì)象的讀指令和/或針對(duì)目標(biāo)內(nèi)存對(duì)象的取指令。以及,上述電子設(shè)備基于針對(duì)目標(biāo)內(nèi)存對(duì)象的指令得到目標(biāo)內(nèi)存對(duì)象對(duì)應(yīng)的目標(biāo)熱點(diǎn)信息,包括:電子設(shè)備基于針對(duì)目標(biāo)內(nèi)存對(duì)象的讀指令的次數(shù)與針對(duì)目標(biāo)內(nèi)存對(duì)象的取指令的次數(shù)得到目標(biāo)內(nèi)存對(duì)象對(duì)應(yīng)的目標(biāo)熱點(diǎn)信息。
11、在這種設(shè)計(jì)中,電子設(shè)備可以根據(jù)取指令與讀指令的次數(shù)之和得到指示目標(biāo)應(yīng)用使用熱點(diǎn)信息對(duì)應(yīng)的內(nèi)存對(duì)象的頻繁程度的熱點(diǎn)信息。
12、在第一方面的又一種可能的設(shè)計(jì)中,在電子設(shè)備基于熱點(diǎn)信息集合對(duì)內(nèi)存對(duì)象執(zhí)行g(shù)c處理之后,上述方法還包括:電子設(shè)備清空熱點(diǎn)信息集合包括的熱點(diǎn)信息。接下來,電子設(shè)備更新熱點(diǎn)信息集合包括的熱點(diǎn)信息。之后,電子設(shè)備基于更新后的熱點(diǎn)信息集合對(duì)內(nèi)存對(duì)象執(zhí)行下一次gc處理。
13、在這種設(shè)計(jì)中,電子設(shè)備可以在非gc時(shí)段獲取電子設(shè)備的熱點(diǎn)信息。以及,在gc時(shí)段,電子設(shè)備根據(jù)該gc時(shí)段對(duì)應(yīng)的非gc時(shí)段獲取的熱點(diǎn)信息對(duì)內(nèi)存對(duì)象執(zhí)行g(shù)c處理。這樣,可以進(jìn)一步地提高內(nèi)存對(duì)象的局部性,那么就可以進(jìn)一步提升電子設(shè)備使用內(nèi)存對(duì)象的效率,提高電子設(shè)備的性能。其中,關(guān)于上述gc時(shí)段和非gc時(shí)段,以及gc時(shí)段和非gc時(shí)段的對(duì)應(yīng)關(guān)系可以參見下文,再此先不詳述。
14、在第一方面的另一種可能的設(shè)計(jì)中,上述電子設(shè)備包括解釋器,解釋器用于將待執(zhí)行的第一代碼解釋執(zhí)行為第二代碼,第一代碼與第二代碼不同,例如,第一代碼可以是字節(jié)碼,第二代碼可以是機(jī)器碼;第一代碼包括針對(duì)目標(biāo)內(nèi)存對(duì)象的指令。上述電子設(shè)備獲取針對(duì)目標(biāo)內(nèi)存對(duì)象的指令,基于針對(duì)目標(biāo)內(nèi)存對(duì)象的指令得到目標(biāo)內(nèi)存對(duì)象對(duì)應(yīng)的目標(biāo)熱點(diǎn)信息,包括:在解釋器將第一代碼解釋執(zhí)行為第二代碼的過程中,電子設(shè)備的解釋器獲取針對(duì)目標(biāo)內(nèi)存對(duì)象的指令,并基于針對(duì)目標(biāo)內(nèi)存對(duì)象的指令得到目標(biāo)內(nèi)存對(duì)象對(duì)應(yīng)的目標(biāo)熱點(diǎn)信息。
15、在這種設(shè)計(jì)中,解釋器可以在將第一代碼解釋執(zhí)行為第二代碼的過程中,得到目標(biāo)內(nèi)存對(duì)象對(duì)應(yīng)的目標(biāo)熱點(diǎn)信息。由此,電子設(shè)備可以高效地得到目標(biāo)熱點(diǎn)信息。
16、在第一方面的一種可能的設(shè)計(jì)中,上述內(nèi)存對(duì)象包括新生代內(nèi)存對(duì)象或老生代內(nèi)存對(duì)象,如,老生代內(nèi)存對(duì)象是經(jīng)歷了k輪gc過程的內(nèi)存對(duì)象,k為正整數(shù);新生代內(nèi)存對(duì)象是除老生代內(nèi)存對(duì)象之外的內(nèi)存對(duì)象。也就是說,上述內(nèi)存對(duì)象可以根據(jù)內(nèi)存對(duì)象的存活時(shí)長劃分為新生代內(nèi)存對(duì)象或老生代內(nèi)存對(duì)象。以及,上述若內(nèi)存對(duì)象符合預(yù)設(shè)條件,則電子設(shè)備將內(nèi)存對(duì)象從第二分區(qū)復(fù)制到第一分區(qū)包括:若新生代內(nèi)存對(duì)象符合預(yù)設(shè)條件,則電子設(shè)備將新生代內(nèi)存對(duì)象從第二分區(qū)復(fù)制到第一分區(qū)。上述若內(nèi)存對(duì)象未符合預(yù)設(shè)條件,則電子設(shè)備將內(nèi)存對(duì)象從第二分區(qū)刪除,包括:若新生代內(nèi)存對(duì)象未符合預(yù)設(shè)條件,則電子設(shè)備將新生代內(nèi)存對(duì)象從第二分區(qū)刪除。以及,上述方法還包括:電子設(shè)備將老生代內(nèi)存對(duì)象從第二分區(qū)復(fù)制到第一子分區(qū)。
17、在這種設(shè)計(jì)中,考慮到電子設(shè)備判斷內(nèi)存對(duì)象是否符合預(yù)設(shè)條件,也會(huì)消耗電子設(shè)備的資源。因此對(duì)于老生代內(nèi)存對(duì)象,電子設(shè)備可以不判斷其否符合預(yù)設(shè)條件,電子設(shè)備直接將老生代內(nèi)存復(fù)制到第一子分區(qū),這樣節(jié)約電子設(shè)備判斷內(nèi)存對(duì)象是否符合預(yù)設(shè)條件的資源消耗,進(jìn)一步地,可以提升電子設(shè)備在執(zhí)行g(shù)c處理過程中的效率。
18、在第一方面的又一種可能的設(shè)計(jì)中,上述第一子分區(qū)在第一分區(qū)的占比與老生代內(nèi)存對(duì)象的數(shù)量正相關(guān)。
19、在這種設(shè)計(jì)中,上述第一子分區(qū)在第一分區(qū)的占比與老生代內(nèi)存對(duì)象的數(shù)量正相關(guān)的,也就是說,老生代內(nèi)存對(duì)象的數(shù)量越多,第一子分區(qū)在第一分區(qū)的占比也就越大。老生代內(nèi)存對(duì)象的數(shù)量越少,第一子分區(qū)在第一分區(qū)的占比也就越小。這樣,可以緩解第一子分區(qū)空間過大造成第一子分區(qū)空間被浪費(fèi)的現(xiàn)象,以及緩解第一子分區(qū)空間過小造成第一子分區(qū)空間不足的現(xiàn)象。
20、在第一方面的又一種可能的設(shè)計(jì)中,第一子分區(qū)位于電子設(shè)備的內(nèi)部存儲(chǔ)器,第二子分區(qū)位于電子設(shè)備的磁盤或者位于電子設(shè)備的內(nèi)部存儲(chǔ)器。在這種設(shè)計(jì)中,電子設(shè)備可以通過虛擬內(nèi)存技術(shù)將第二子分區(qū)落盤到電子設(shè)備的磁盤,由此可以節(jié)約電子設(shè)備的內(nèi)存存儲(chǔ)器的空間。
21、第二方面,提供一種電子設(shè)備,該電子設(shè)備包括處理器、存儲(chǔ)器;處理器與存儲(chǔ)器耦合;存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序代碼;計(jì)算機(jī)程序代碼包括計(jì)算機(jī)指令,當(dāng)處理器執(zhí)行上述計(jì)算機(jī)指令時(shí),使得電子設(shè)備執(zhí)行上述第一方面以及第一方面的任一種可能的設(shè)計(jì)所提供的方法。
22、第三方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括計(jì)算機(jī)指令,當(dāng)計(jì)算機(jī)指令在電子設(shè)備上運(yùn)行時(shí),使得電子設(shè)備執(zhí)行上述第一方面以及第一方面的任一種可能的設(shè)計(jì)所提供的方法。
23、第四方面,提供一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品中包括指令,當(dāng)計(jì)算機(jī)程序產(chǎn)品在電子設(shè)備上運(yùn)行時(shí),使得電子設(shè)備執(zhí)行上述第一方面以及第一方面的任一種可能的設(shè)計(jì)所提供的方法。
24、其中,第二方面至第四方面中任一種設(shè)計(jì)方式所帶來的技術(shù)效果可參見第一方面中不同設(shè)計(jì)方式所帶來的技術(shù)效果,此處不再贅述。