本技術(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ī)制就稱(chēng)為垃圾回收。
2、目前,電子設(shè)備的內(nèi)存空間可以分為第一分區(qū)和第二分區(qū),內(nèi)存對(duì)象在第二分區(qū)上,在電子設(shè)備執(zhí)行g(shù)c處理的過(guò)程中,電子設(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è)有待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本技術(shù)實(shí)施例提供一種垃圾回收方法、電子設(shè)備及存儲(chǔ)介質(zhì),在該方法中,電子設(shè)備使用頻繁程度相近的內(nèi)存對(duì)象,這些內(nèi)存對(duì)象在gc處理后,在第一分區(qū)上的位置也是接近的,由此可以提高內(nèi)存對(duì)象的局部性。那么就可以提升電子設(shè)備的工作效率,提高電子設(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è)備對(duì)目標(biāo)應(yīng)用對(duì)應(yīng)的內(nèi)存對(duì)象執(zhí)行垃圾回收gc處理。上述電子設(shè)備對(duì)目標(biāo)應(yīng)用對(duì)應(yīng)的內(nèi)存對(duì)象執(zhí)行g(shù)c處理,包括:在內(nèi)存對(duì)象符合預(yù)設(shè)條件的情況下,電子設(shè)備將內(nèi)存對(duì)象從第二分區(qū)復(fù)制到第一分區(qū)。其中,在內(nèi)存對(duì)象的頻繁程度高于或等于程度閾值的情況下,內(nèi)存對(duì)象被復(fù)制到第一子分區(qū);在內(nèi)存對(duì)象的頻繁程度低于程度閾值的情況下,內(nèi)存對(duì)象被復(fù)制到第二子分區(qū)。在內(nèi)存對(duì)象未符合預(yù)設(shè)條件的情況下,電子設(shè)備將內(nèi)存對(duì)象從第二分區(qū)刪除。以及,內(nèi)存對(duì)象符合預(yù)設(shè)條件可以理解為內(nèi)存對(duì)象通過(guò)可達(dá)性測(cè)試,內(nèi)存對(duì)象不符合預(yù)設(shè)條件可以理解為內(nèi)存對(duì)象未通過(guò)可達(dá)性測(cè)試。
4、在上述方法中,由于內(nèi)存對(duì)象的頻繁程度不同的內(nèi)存對(duì)象被復(fù)制到不同的分區(qū),如,內(nèi)存對(duì)象的頻繁程度高于程度閾值的被復(fù)制到第一子分區(qū),內(nèi)存對(duì)象的頻繁程度低于程度閾值的被復(fù)制到第二子分區(qū),也就是說(shuō),內(nèi)存對(duì)象的頻繁程度高于程度閾值的是被復(fù)制到第一子分區(qū)上的。同時(shí)由于第一子分區(qū)的內(nèi)存地址是連續(xù)的,那么第一子分區(qū)上的內(nèi)存對(duì)象的位置是接近的??梢?jiàn),通過(guò)上述方法可以將目標(biāo)應(yīng)用使用的頻繁程度高的內(nèi)存對(duì)象集中在第一子分區(qū)上,由此,就可以提高內(nèi)存對(duì)象的局部性,那么就可以提升電子設(shè)備使用內(nèi)存對(duì)象的效率,提高電子設(shè)備的性能。
5、在第一方面的一種可能的設(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ì)象。也就是說(shuō),上述內(nèi)存對(duì)象可以根據(jù)內(nèi)存對(duì)象的存活時(shí)長(zhǎng)劃分為新生代內(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ū)刪除。以及,上述對(duì)目標(biāo)應(yīng)用對(duì)應(yīng)的內(nèi)存對(duì)象執(zhí)行垃圾回收gc處理,還包括:電子設(shè)備將老生代內(nèi)存對(duì)象從第二分區(qū)復(fù)制到第一子分區(qū)。
6、在這種設(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處理過(guò)程中的效率。
7、在第一方面的又一種可能的設(shè)計(jì)中,上述第一子分區(qū)在第一分區(qū)的占比與老生代內(nèi)存對(duì)象的數(shù)量正相關(guān)。
8、在這種設(shè)計(jì)中,上述第一子分區(qū)在第一分區(qū)的占比與老生代內(nèi)存對(duì)象的數(shù)量正相關(guān)的,也就是說(shuō),老生代內(nèi)存對(duì)象的數(shù)量越多,第一子分區(qū)在第一分區(qū)的占比也就越大。老生代內(nèi)存對(duì)象的數(shù)量越少,第一子分區(qū)在第一分區(qū)的占比也就越小。這樣,可以緩解第一子分區(qū)空間過(guò)大造成第一子分區(qū)空間被浪費(fèi)的現(xiàn)象,以及緩解第一子分區(qū)空間過(guò)小造成第一子分區(qū)空間不足的現(xiàn)象。
9、在第一方面的另一種可能的設(shè)計(jì)中,在電子設(shè)備對(duì)目標(biāo)應(yīng)用對(duì)應(yīng)的內(nèi)存對(duì)象執(zhí)行g(shù)c處理之前,上述方法還包括:電子設(shè)備獲取內(nèi)存對(duì)象的熱點(diǎn)信息,熱點(diǎn)信息用于指示目標(biāo)應(yīng)用使用內(nèi)存對(duì)象的頻繁程度。以及,上述在內(nèi)存對(duì)象的頻繁程度高于或等于程度閾值的情況下,內(nèi)存對(duì)象被復(fù)制到第一子分區(qū),包括:在熱點(diǎn)信息指示目標(biāo)應(yīng)用使用內(nèi)存對(duì)象的頻繁程度高于或等于程度閾值的情況下,內(nèi)存對(duì)象被復(fù)制到第一子分區(qū)。以及,上述在內(nèi)存對(duì)象的頻繁程度低于程度閾值的情況下,內(nèi)存對(duì)象被復(fù)制到第二子分區(qū),包括:在熱點(diǎn)信息指示內(nèi)存對(duì)象的頻繁程度低于程度閾值的情況下,內(nèi)存對(duì)象被復(fù)制到第二子分區(qū)。
10、在這種設(shè)計(jì)中,電子設(shè)備可以通過(guò)熱點(diǎn)信息,準(zhǔn)確地獲取到指示目標(biāo)應(yīng)用使用內(nèi)存對(duì)象的頻繁程度的熱點(diǎn)信息。并根據(jù)熱點(diǎn)信息,確定內(nèi)存對(duì)象被復(fù)制到的子分區(qū),如,第一子分區(qū)或第二子分區(qū)。
11、在第一方面的又一種可能的設(shè)計(jì)中,上述電子設(shè)備獲取內(nèi)存對(duì)象的熱點(diǎn)信息,包括:電子設(shè)備將內(nèi)存對(duì)象的熱點(diǎn)信息寫(xiě)入內(nèi)存對(duì)象的文件頭。
12、在這種設(shè)計(jì)中,電子設(shè)備可以通過(guò)內(nèi)存對(duì)象的文件頭高效地存儲(chǔ)該內(nèi)存對(duì)象的熱點(diǎn)信息。
13、在第一方面的另一種可能的設(shè)計(jì)中,上述內(nèi)存對(duì)象的狀態(tài)包括輕鎖狀態(tài)、重鎖狀態(tài)或哈希狀態(tài)。上述電子設(shè)備將內(nèi)存對(duì)象的熱點(diǎn)信息寫(xiě)入內(nèi)存對(duì)象的文件頭,包括:在內(nèi)存對(duì)象的狀態(tài)是輕鎖狀態(tài)或哈希狀態(tài)的情況下,電子設(shè)備將熱點(diǎn)信息寫(xiě)入內(nèi)存對(duì)象的文件頭。以及,上述電子設(shè)備對(duì)目標(biāo)應(yīng)用對(duì)應(yīng)的內(nèi)存對(duì)象執(zhí)行g(shù)c處理,還包括:若內(nèi)存對(duì)象的狀態(tài)是重鎖狀態(tài),且內(nèi)存對(duì)象符合預(yù)設(shè)條件,則電子設(shè)備將內(nèi)存對(duì)象復(fù)制到第一子分區(qū)。
14、在這種設(shè)計(jì)中,對(duì)于是重鎖狀態(tài)的內(nèi)存對(duì)象,由于重鎖狀態(tài)其狀態(tài)本身就能夠表示內(nèi)存對(duì)象的頻繁程度高。由此,可以將符合預(yù)設(shè)條件的重鎖狀態(tài)的內(nèi)存對(duì)象,直接復(fù)制到第一子分區(qū)。這樣,電子設(shè)備可以節(jié)約獲取重鎖狀態(tài)的內(nèi)存對(duì)象的熱點(diǎn)信息的資源消耗,可以進(jìn)一步地提高電子設(shè)備的效率。
15、在第一方面的又一種可能的設(shè)計(jì)中,上述內(nèi)存對(duì)象的狀態(tài)是輕鎖狀態(tài),處于輕鎖狀態(tài)的內(nèi)存對(duì)象的文件頭包括第一字段,第一字段用于存儲(chǔ)針對(duì)內(nèi)存對(duì)象的輕鎖次數(shù)信息。上述,電子設(shè)備將熱點(diǎn)信息寫(xiě)入內(nèi)存對(duì)象的文件頭,包括:電子設(shè)備將熱點(diǎn)信息寫(xiě)入第一字段。
16、在這種設(shè)計(jì)中,電子設(shè)備可以通過(guò)將熱點(diǎn)信息寫(xiě)入第一字段的方式,便捷地在內(nèi)存對(duì)象中存儲(chǔ)熱點(diǎn)信息。
17、在第一方面的另一種可能的設(shè)計(jì)中,內(nèi)存對(duì)象的狀態(tài)是哈希狀態(tài),處于哈希狀態(tài)的內(nèi)存對(duì)象的文件頭包括第二字段,第二字段用于存儲(chǔ)針對(duì)內(nèi)存對(duì)象的哈希值。上述電子設(shè)備將熱點(diǎn)信息寫(xiě)入內(nèi)存對(duì)象的文件頭,包括:電子設(shè)備將熱點(diǎn)信息寫(xiě)入第二字段。
18、在這種設(shè)計(jì)中,電子設(shè)備可以通過(guò)將熱點(diǎn)信息寫(xiě)入第一字段的方式,便捷地在內(nèi)存對(duì)象中存儲(chǔ)熱點(diǎn)信息。
19、在第一方面的又一種可能的設(shè)計(jì)中,上述電子設(shè)備獲取內(nèi)存對(duì)象的熱點(diǎn)信息,包括:
20、電子設(shè)備獲取針對(duì)內(nèi)存對(duì)象的讀指令以及獲取針對(duì)內(nèi)存對(duì)象的寫(xiě)指令。接下來(lái),電子設(shè)備基于針對(duì)內(nèi)存對(duì)象的讀指令與針對(duì)內(nèi)存對(duì)象的寫(xiě)指令得到熱點(diǎn)信息。
21、在這種設(shè)計(jì)中,電子設(shè)備可以通過(guò)針對(duì)內(nèi)存對(duì)象的讀指令與針對(duì)內(nèi)存對(duì)象的寫(xiě)指令準(zhǔn)確地確定電子設(shè)備的熱點(diǎn)信息。
22、在第一方面的另一種可能的設(shè)計(jì)中,上述電子設(shè)備基于針對(duì)內(nèi)存對(duì)象的讀指令與針對(duì)內(nèi)存對(duì)象的寫(xiě)指令得到熱點(diǎn)信息,包括:
23、在針對(duì)內(nèi)存對(duì)象的取指令的次數(shù)與針對(duì)內(nèi)存對(duì)象的寫(xiě)指令的次數(shù)之和大于或等于m次的情況下,電子設(shè)備得到指示目標(biāo)應(yīng)用使用內(nèi)存對(duì)象的頻繁程度高于或等于程度閾值的熱點(diǎn)信息;m為正整數(shù)。在針對(duì)內(nèi)存對(duì)象的取指令的次數(shù)與針對(duì)內(nèi)存對(duì)象的寫(xiě)指令的次數(shù)之和小于m次的情況下,電子設(shè)備得到指示目標(biāo)應(yīng)用使用內(nèi)存對(duì)象的頻繁程度低于程度閾值的熱點(diǎn)信息。
24、在第一方面的又一種可能的設(shè)計(jì)中,第一子分區(qū)位于電子設(shè)備的內(nèi)部存儲(chǔ)器,第二子分區(qū)位于電子設(shè)備的內(nèi)部存儲(chǔ)器或者電子設(shè)備的磁盤(pán)。在這種設(shè)計(jì)中,電子設(shè)備可以通過(guò)虛擬內(nèi)存技術(shù)將第二子分區(qū)落盤(pán)到電子設(shè)備的磁盤(pán),由此可以節(jié)約電子設(shè)備的內(nèi)存存儲(chǔ)器的空間。
25、第二方面,提供一種電子設(shè)備,該電子設(shè)備包括處理器、存儲(chǔ)器;處理器與存儲(chǔ)器耦合;存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序代碼;計(jì)算機(jī)程序代碼包括計(jì)算機(jī)指令,當(dāng)處理器執(zhí)行上述計(jì)算機(jī)指令時(shí),使得電子設(shè)備執(zhí)行上述第一方面以及第一方面的任一種可能的設(shè)計(jì)所提供的方法。
26、第三方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括計(jì)算機(jī)指令,當(dāng)計(jì)算機(jī)指令在電子設(shè)備上運(yùn)行時(shí),使得電子設(shè)備執(zhí)行上述第一方面以及第一方面的任一種可能的設(shè)計(jì)所提供的方法。
27、第四方面,提供一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品中包括指令,當(dāng)計(jì)算機(jī)程序產(chǎn)品在電子設(shè)備上運(yùn)行時(shí),使得電子設(shè)備執(zhí)行上述第一方面以及第一方面的任一種可能的設(shè)計(jì)所提供的方法。
28、其中,第二方面至第四方面中任一種設(shè)計(jì)方式所帶來(lái)的技術(shù)效果可參見(jiàn)第一方面中不同設(shè)計(jì)方式所帶來(lái)的技術(shù)效果,此處不再贅述。