国产真实乱全部视频,黄色片视频在线免费观看,密臀av一区二区三区,av黄色一级,中文字幕.com,日本a级网站,在线视频观看91

一種內(nèi)存釋放方法及相關(guān)設(shè)備與流程

文檔序號:42295365發(fā)布日期:2025-06-27 18:32閱讀:8來源:國知局

本技術(shù)涉及內(nèi)存,尤其涉及一種內(nèi)存釋放方法及相關(guān)設(shè)備。


背景技術(shù):

1、目前,相關(guān)技術(shù)人員對數(shù)據(jù)進行分析處理時,一般基于數(shù)據(jù)流圖(data?flowdiagram,dfd)表示數(shù)據(jù)處理邏輯。數(shù)據(jù)流圖可以從數(shù)據(jù)傳遞和加工的角度,以圖的方式表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程。數(shù)據(jù)流圖中的每個節(jié)點稱為算子,算子用于處理數(shù)據(jù)。在算子處理數(shù)據(jù)時,可以申請臨時使用或者用于保存結(jié)果并傳遞給下一個算子的內(nèi)存。在申請內(nèi)存時,一般需要用戶手動管理內(nèi)存,而手動管理內(nèi)存容易出現(xiàn)內(nèi)存泄漏的問題。

2、為了解決用戶手動管理內(nèi)存中可能出現(xiàn)的內(nèi)存泄漏問題,通常采用垃圾回收算法。例如,使用標記-清除(mark-sweep)算法來實現(xiàn)垃圾收集。在申請內(nèi)存時,將線程棧、寄存器、數(shù)據(jù)段等作為掃描的起始點(root),然后從root開始往下掃描,將能掃描到的內(nèi)存標記為在使用,剩下已被分配但是未被標記的內(nèi)存為垃圾,最后將垃圾全部回收以用于下次內(nèi)存分配。

3、但是,由于掃描時無法確定申請的內(nèi)存所保存的具體位置,因此,掃描時需要將所有可能保存內(nèi)存的位置都要掃描到,導(dǎo)致掃描的范圍較大,垃圾回收性能較差。


技術(shù)實現(xiàn)思路

1、本技術(shù)提供了一種內(nèi)存釋放方法及相關(guān)裝置,能夠提升垃圾回收的性能。

2、第一方面,本技術(shù)提供了一種內(nèi)存釋放方法,該方法包括:

3、獲取目標數(shù)據(jù)流圖,其中,該目標數(shù)據(jù)流圖用于表征目標數(shù)據(jù)的處理邏輯,該目標數(shù)據(jù)流圖包括算子;執(zhí)行該目標數(shù)據(jù)流圖對應(yīng)的處理邏輯,以對該目標數(shù)據(jù)進行處理;在該目標數(shù)據(jù)流圖中的所有算子執(zhí)行完成時,獲取為最后一個算子的輸出結(jié)果分配的第一內(nèi)存;從第一內(nèi)存中篩選出未被使用的第一空閑內(nèi)存,并釋放該第一空閑內(nèi)存。

4、在數(shù)據(jù)流圖中,由于可能會被使用的內(nèi)存僅能通過最后一個算子的輸出結(jié)果傳遞出去,因此,為了確定哪些內(nèi)存可能會被使用,本方法在執(zhí)行完目標數(shù)據(jù)流圖中的所有算子后,根據(jù)最后一個算子的輸出結(jié)果從為每個算子分配的第一內(nèi)存中確定未被使用的第一空閑內(nèi)存,并將未被使用的第一空閑內(nèi)存進行釋放,以將垃圾回收的掃描范圍縮小到最后一個算子的輸出結(jié)果內(nèi),從而提高了掃描的效率,提升了垃圾回收的性能。

5、在第一方面的一種可能實現(xiàn)方式中,獲取為最后一個算子的輸出結(jié)果分配的第一內(nèi)存,包括:

6、從最后一個算子的輸出結(jié)果中獲取指針字段;

7、根據(jù)指針字段確定第一內(nèi)存的第一起始地址和第一偏移長度。

8、基于上述技術(shù)方法,該方法通過獲取目標數(shù)據(jù)流圖的最后一個算子的輸出結(jié)果中的指針字段,以確定目標數(shù)據(jù)流圖的出參保存的內(nèi)存位置。

9、在第一方面的一種可能實現(xiàn)方式中,從第一內(nèi)存中篩選出未被使用的第一空閑內(nèi)存,包括:

10、獲取為每個算子分配的第二內(nèi)存;

11、將第一內(nèi)存與為每個算子分配的第二內(nèi)存進行比較,確定第一空閑內(nèi)存。

12、本方法將第一內(nèi)存與為每個算子分配的第二內(nèi)存進行比較,可以確定為算子分配的第二內(nèi)存中的哪些內(nèi)存可能會被使用,并將不會被使用的內(nèi)存標記為第一空閑內(nèi)存,明確垃圾回收的范圍。

13、在第一方面的一種可能實現(xiàn)方式中,第一內(nèi)存包括第一起始地址和第一偏移長度,第二內(nèi)存包括第二起始地址和第二偏移長度,對于為每個算子分配的第一內(nèi)存,將第一內(nèi)存與第二內(nèi)存進行比較,確定第一空閑內(nèi)存,包括:

14、若第一起始地址大于或者等于第二起始地址,且第一長度小于或者等于第二長度,則將第一內(nèi)存確定為被占用的內(nèi)存;將第二內(nèi)存中除被占用的內(nèi)存以外的內(nèi)存確定為第一空閑內(nèi)存。

15、本方法將為最后一個算子分配的第一內(nèi)存與為每個算子分配的第二內(nèi)存分別進行比較,若第一內(nèi)存的第一起始地址大于或者等于第二起始地址,且第一長度小于或者等于第二地址,則說明第一內(nèi)存等于或者在第二內(nèi)存的范圍之內(nèi)。由于可能會被使用的內(nèi)存僅能通過最后一個算子的輸出結(jié)果傳遞出去,因此,若第一內(nèi)存等于或者在第二內(nèi)存的范圍之內(nèi),則該第一內(nèi)存確定為被占用的內(nèi)存,并釋放掉第二內(nèi)存中除被占用的內(nèi)存以外的內(nèi)存,以將垃圾回收的掃描范圍縮小到了最后一個算子的輸出結(jié)果內(nèi),從而提高了掃描的效率,提升了垃圾回收的性能。

16、在第一方面的一種可能實現(xiàn)方式中,該方法還包括:

17、在目標數(shù)據(jù)流圖中的每個算子執(zhí)行完成時,釋放為每個算子分配的臨時內(nèi)存。

18、由于為每個算子分配的臨時內(nèi)存僅會在該算子的內(nèi)部使用,因此,本方法在執(zhí)行完目標數(shù)據(jù)流圖中的每個算子后,立即釋放為每個算子分配的臨時內(nèi)存,而無需用戶手動進行內(nèi)存釋放,從而省去了進行垃圾回收時的掃描操作,避免了內(nèi)存泄露問題,也提升了垃圾回收的性能。

19、在第一方面的一種可能實現(xiàn)方式中,對于目標數(shù)據(jù)流圖中的每個算子,在算子執(zhí)行完成時,釋放為算子分配的臨時內(nèi)存,包括:

20、獲取第二空閑內(nèi)存的起始地址;

21、將寫指針重新指向第二空閑內(nèi)存的起始地址。

22、本方法在執(zhí)行完每個目標數(shù)據(jù)流圖中的每個算子時,通過將寫指針重新指向第二空閑內(nèi)存的起始地址的方式釋放為每個算子分配的臨時內(nèi)存,從而省去了人為手動釋放內(nèi)存的操作,避免了內(nèi)存泄露問題。

23、在第一方面的一種可能實現(xiàn)方式中,對于目標數(shù)據(jù)流圖中的每個算子,在算子執(zhí)行完成時,釋放為算子分配的臨時內(nèi)存后,方法還包括:

24、在算子為執(zhí)行路徑的最后一個算子時,釋放為執(zhí)行路徑分配的內(nèi)存。

25、本方法在執(zhí)行完目標數(shù)據(jù)流圖中的每個算子時,若判斷到某一個算子為執(zhí)行路徑上的最后一個算子時,則釋放為該執(zhí)行路徑分配的內(nèi)存,以避免出現(xiàn)內(nèi)存泄露的問題。

26、第二方面,本技術(shù)提供了一種內(nèi)存釋放裝置,第二方面的有益效果可以參見第一方面的描述,此處不再贅述。該裝置具有實現(xiàn)上述第一方面的方法實例中行為的功能。該功能可以通過硬件實現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實現(xiàn)。該硬件或軟件包括一個或多個與上述功能相對應(yīng)的模塊。該裝置包括:

27、數(shù)據(jù)流圖獲取模塊,用于獲取目標數(shù)據(jù)流圖,目標數(shù)據(jù)流圖用于表征目標數(shù)據(jù)的處理邏輯,目標數(shù)據(jù)流圖包括算子;

28、數(shù)據(jù)流圖執(zhí)行模塊,用于執(zhí)行目標數(shù)據(jù)流圖對應(yīng)的處理邏輯,以對目標數(shù)據(jù)進行處理;

29、第一內(nèi)存獲取模塊,用于在目標數(shù)據(jù)流圖中的所有算子執(zhí)行完成時,獲取為最后一個算子的輸出結(jié)果分配的第一內(nèi)存;

30、空閑內(nèi)存釋放模塊,用于從第一內(nèi)存中篩選出未被使用的第一空閑內(nèi)存,并釋放第一空閑內(nèi)存。

31、在第二方面的一種可能實現(xiàn)方式中,第一內(nèi)存獲取模塊還用于:

32、從最后一個算子的輸出結(jié)果中獲取指針字段;

33、根據(jù)指針字段確定第一內(nèi)存的第一起始地址和第一偏移長度。

34、在第二方面的一種可能實現(xiàn)方式中,空閑內(nèi)存釋放模塊還用于:

35、獲取為每個算子分配的第二內(nèi)存;

36、將第一內(nèi)存與為每個算子分配的第二內(nèi)存進行比較,確定第一空閑內(nèi)存。

37、在第二方面的一種可能實現(xiàn)方式中,第一內(nèi)存包括第一起始地址和第一偏移長度,第二內(nèi)存包括第二起始地址和第二偏移長度,對于為每個算子分配的第一內(nèi)存,空閑內(nèi)存釋放模塊還用于:

38、若第一起始地址大于或者等于第二起始地址,且第一長度小于或者等于第二長度,則將第一內(nèi)存確定為被占用的內(nèi)存;

39、將第二內(nèi)存中除被占用的內(nèi)存以外的內(nèi)存確定為第一空閑內(nèi)存。

40、在第二方面的一種可能實現(xiàn)方式中,空閑內(nèi)存釋放模塊還用于:

41、在目標數(shù)據(jù)流圖中的每個算子執(zhí)行完成時,釋放為每個算子分配的臨時內(nèi)存。

42、在第二方面的一種可能實現(xiàn)方式中,對于目標數(shù)據(jù)流圖中的每個算子,空閑內(nèi)存釋放模塊還用于:

43、獲取第二空閑內(nèi)存的起始地址;

44、將寫指針重新指向第二空閑內(nèi)存的起始地址。

45、在第二方面的一種可能實現(xiàn)方式中,對于數(shù)據(jù)流圖中的每個算子,在算子執(zhí)行完成時,釋放為算子分配的臨時內(nèi)存后,空閑內(nèi)存釋放模塊還用于:

46、在算子為執(zhí)行路徑的最后一個算子時,釋放為執(zhí)行路徑分配的內(nèi)存。

47、第三方面,本技術(shù)提供了一種計算設(shè)備,包括存儲器和處理器;

48、存儲器,用于存儲計算機程序;

49、處理器,用于執(zhí)行計算機程序以使得計算設(shè)備實現(xiàn)上述第一方面或第一方面的任一可能的實現(xiàn)方式中的方法。

50、第四方面,本技術(shù)提供了一種計算機程序產(chǎn)品,該計算機產(chǎn)品被計算機執(zhí)行時,實現(xiàn)上述第一方面或第一方面的任一可能的實現(xiàn)方式中的方法。

51、第五方面,本技術(shù)提供了一種芯片系統(tǒng),該芯片系統(tǒng)包括處理器,用于實現(xiàn)上述第一方面或第一方面的任一可能的實現(xiàn)方式中的方法。在一種可能的設(shè)計中,芯片系統(tǒng)還包括存儲器,用于保存程序指令和/或數(shù)據(jù)。該芯片系統(tǒng),可以由芯片構(gòu)成,也可以包括芯片和其它分立器件。

52、第六方面,本技術(shù)提供了一種計算機可讀存儲介質(zhì),存儲介質(zhì)內(nèi)存儲有計算機程序,計算機程序被處理器執(zhí)行時實現(xiàn)上述第一方面或第一方面的任一可能的實現(xiàn)方式中的方法。

53、上述第二至第六方面的方案,用于實現(xiàn)或配合實現(xiàn)上述第一方面或其中任一種可能的實現(xiàn)方式中的方法,因此能夠與第一方面達到相同或相應(yīng)的有益效果,此處不再進行贅述。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1