System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本公開實施例涉及計算機與網絡通信,尤其涉及一種基于運行時系統的內存分配方法、設備及存儲介質。
技術介紹
1、內存管理通常負責運行時系統的內存分配和垃圾回收,內存分配的任務是返回一塊可用的指定大小的內存空間,垃圾回收的任務是盡可能精確的區分存活和不再存活的對象,并將不再存活的對象進行清理,以供后續的內存分配。而想要盡可能精確的區分存活和不再存活的對象就需要知道對象中的哪些位置是指針,以便進行遞歸標記。而內存分配和垃圾回收一般是間隔一段時間進行的,指針布局信息在內存分配過程中提供,而垃圾回收時也需要使用指針布局信息,因此需要將指針布局信息延續到垃圾回收時仍可使用。
2、現有技術中通常可以通過對每個對象分配對象頭來標識指針布局信息,或者通過全局的bitmap(位圖)來編碼對象的指針布局信息,進而可提供給垃圾回收過程使用。但是上述方法都會產生額外的開銷,導致資源浪費。
技術實現思路
1、本公開實施例提供一種基于運行時系統的內存分配方法、設備及存儲介質,以減少內存分配的額外開銷,減少資源浪費。
2、第一方面,本公開實施例提供一種基于運行時系統的內存分配方法,包括:
3、確定待分配對象的第一數據大小以及第一指針布局類型;其中任一指針布局類型用于標識指針在對象中的布局方式;其中任一指針布局類型用于標識指針在對象中的布局方式;
4、根據所述第一數據大小以及所述第一指針布局類型,從預先配置的不同類型的內存塊中確定用于存儲所述待分配對象的目標內存塊;其中
5、在所述目標內存塊中為所述待分配對象分配可用內存空間,并將所述待分配對象存儲到所述可用內存空間中。
6、第二方面,本公開實施例提供一種基于運行時系統的內存分配設備,包括:
7、確定單元,用于確定待分配對象的第一數據大小以及第一指針布局類型;
8、內存塊選擇單元,用于根據所述第一數據大小以及所述第一指針布局類型,從預先配置的不同類型的內存塊中確定用于存儲所述待分配對象的目標內存塊;其中任一類型的內存塊用于存儲一種類型的對象,同一種類型的對象具有相同的數據大小以及指針布局類型;
9、內存分配單元,用于在所述目標內存塊中為所述待分配對象分配可用內存空間,并將所述待分配對象存儲到所述可用內存空間中。
10、第三方面,本公開實施例提供一種電子設備,包括:至少一個處理器和存儲器;
11、所述存儲器存儲計算機執行指令;
12、所述至少一個處理器執行所述存儲器存儲的計算機執行指令,使得所述至少一個處理器執行如上第一方面以及第一方面各種可能的設計所述的基于運行時系統的內存分配方法。
13、第四方面,本公開實施例提供一種計算機可讀存儲介質,所述計算機可讀存儲介質中存儲有計算機執行指令,當處理器執行所述計算機執行指令時,實現如上第一方面以及第一方面各種可能的設計所述的基于運行時系統的內存分配方法。
14、第五方面,本公開實施例提供一種計算機程序產品,包括計算機執行指令,當處理器執行所述計算機執行指令時,實現如上第一方面以及第一方面各種可能的設計所述的基于運行時系統的內存分配方法。
15、本公開實施例提供的基于運行時系統的內存分配方法、設備及存儲介質,通過確定待分配對象的第一數據大小以及第一指針布局類型;其中任一指針布局類型用于標識指針在對象中的布局方式;根據第一數據大小以及第一指針布局類型,從預先配置的不同類型的內存塊中確定用于存儲待分配對象的目標內存塊,其中任一類型的內存塊用于存儲一種類型的對象,同一種類型的對象具有相同的數據大小以及指針布局類型;在目標內存塊中為待分配對象分配可用內存空間,并將待分配對象存儲到可用內存空間中。通過配置不同類型的內存塊來存儲不同數據大小、不同指針布局類型的對象,無需使用額外的對象頭或者全局bitmap來存儲對象的指針布局信息,減少了額外的內存開銷,也減少了編解碼的cpu開銷,提升內存分配效率,可以使得后續的垃圾回收等需要獲取對象中指針的過程提高效率。
本文檔來自技高網...【技術保護點】
1.一種基于運行時系統的內存分配方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,在所述將所述待分配對象存儲到所述可用內存空間中后,還包括:
3.根據權利要求2所述的方法,其特征在于,所述根據當前遍歷對象的第二指針布局類型獲取當前遍歷對象中的指針以基于指針進行繼續遍歷,并將遍歷到的對象標記為存活狀態,包括:
4.根據權利要求2所述的方法,其特征在于,所述根據當前遍歷對象所在內存塊的類型確定當前遍歷對象的第二指針布局類型,包括,
5.根據權利要求1所述的方法,其特征在于,所述方法還包括:
6.根據權利要求4所述的方法,其特征在于,所述方法包括:
7.根據權利要求1-6任一項所述的方法,其特征在于,在同一數據大小的不同指針布局類型的對象中,其所包括的各字段是否為指針有所不同。
8.一種基于運行時系統的內存分配設備,其特征在于,包括:
9.一種電子設備,其特征在于,包括:至少一個處理器和存儲器;
10.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質中
11.一種計算機程序產品,其特征在于,包括計算機執行指令,當處理器執行所述計算機執行指令時,實現如權利要求1-7任一項所述的方法。
...【技術特征摘要】
1.一種基于運行時系統的內存分配方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,在所述將所述待分配對象存儲到所述可用內存空間中后,還包括:
3.根據權利要求2所述的方法,其特征在于,所述根據當前遍歷對象的第二指針布局類型獲取當前遍歷對象中的指針以基于指針進行繼續遍歷,并將遍歷到的對象標記為存活狀態,包括:
4.根據權利要求2所述的方法,其特征在于,所述根據當前遍歷對象所在內存塊的類型確定當前遍歷對象的第二指針布局類型,包括,
5.根據權利要求1所述的方法,其特征在于,所述方法還包括:
6.根據權利要求4所述的方法,其特征在于,所述...
【專利技術屬性】
技術研發人員:王德宇,陸傳勝,季向東,張逸飛,顧天曉,
申請(專利權)人:北京火山引擎科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。