[發明專利]一種Java對象訪問的方法和裝置在審
| 申請號: | 202111122033.X | 申請日: | 2021-09-24 |
| 公開(公告)號: | CN113900743A | 公開(公告)日: | 2022-01-07 |
| 發明(設計)人: | 李金虎;王廣官 | 申請(專利權)人: | 阿里云計算有限公司 |
| 主分類號: | G06F9/448 | 分類號: | G06F9/448;G06F13/28 |
| 代理公司: | 北京潤澤恒知識產權代理有限公司 11319 | 代理人: | 趙娟 |
| 地址: | 310024 浙江省*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 java 對象 訪問 方法 裝置 | ||
本發明實施例提供了及一種Java對象訪問的方法和裝置,所述方法包括:在目標硬件直接存儲器訪問Java堆中目標Java對象的過程中,當檢測到即將開始在所述Java堆回收內存時,保存所述目標Java對象的狀態信息,并控制目標硬件停止直接存儲器訪問目標Java對象;當檢測到在所述Java堆回收內存結束時,若所述目標Java對象的內存地址發生變化,則根據所述狀態信息獲取新的內存地址,并將所述新的內存地址發送至所述目標硬件,以使所述目標硬件通過所述新的內存地址直接存儲器訪問所述目標Java對象。通過本發明實施例,實現了兼容Java堆內存回收和直接存儲器訪問,避免了在Java堆內存回收時導致直接存儲器訪問到錯誤的內容。
技術領域
本發明涉及內存技術領域,特別是涉及一種Java對象訪問的方法和裝置。
背景技術
在某些場景下,需要直接存儲器訪問(DMA,Direct Memory Access)Java堆(Java對象存儲的區域)中存儲的Java對象,而由于Java堆存在垃圾回收機制(GC,GarbageCollection),其主要用于Java堆的內存管理,在對Java堆進行內存管理時,可能會對Java對象進行移動,進而增大連續的空閑內存,但這樣會導致同一個Java對象的內存地址發生變化,進而導致直接存儲器訪問到錯誤的內容。
發明內容
鑒于上述問題,提出了以便提供克服上述問題或者至少部分地解決上述問題的一種Java對象訪問的方法和裝置,包括:
一種Java對象訪問的方法,所述方法包括:
在目標硬件直接存儲器訪問Java堆中目標Java對象的過程中,當檢測到即將開始在所述Java堆回收內存時,保存所述目標Java對象的狀態信息,并控制所述目標硬件停止直接存儲器訪問所述目標Java對象;
當檢測到在所述Java堆回收內存結束時,若所述目標Java對象的內存地址發生變化,則根據所述狀態信息獲取新的內存地址,并將所述新的內存地址發送至所述目標硬件,以使所述目標硬件通過所述新的內存地址直接存儲器訪問所述目標Java對象。
可選地,還包括:
當檢測到即將開始在所述Java堆回收內存時,控制所述目標硬件停止保存所述目標Java對象的訪問記錄,以使所述目標硬件在所述Java堆回收內存結束時,通過所述新的內存地址和所述訪問記錄直接存儲器訪問所述目標Java對象。
可選地,還包括:
注冊第一預設事件;
所述當檢測到即將開始在所述Java堆回收內存時,保存所述目標Java對象的狀態信息,包括:
當檢測到即將開始在所述Java堆回收內存時,觸發所述第一預設事件;
響應于所述第一預設事件的觸發,保存所述目標Java對象的狀態信息。
可選地,還包括:
注冊第二預設事件;
所述當檢測到在所述Java堆回收內存結束時,若所述目標Java對象的內存地址發生變化,則根據所述狀態信息獲取新的內存地址,包括:
當檢測到在所述Java堆回收內存結束時,觸發所述第二預設事件;
響應于所述第二預設事件的觸發,若所述目標Java對象的內存地址發生變化,則根據所述狀態信息獲取新的內存地址。
可選地,所述目標Java對象為遠程過程調用的對象。
可選地,所述狀態信息包括所述目標Java對象自身的引用信息。
可選地,所述訪問記錄包括已直接存儲器訪問所述目標Java對象的字節信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里云計算有限公司,未經阿里云計算有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202111122033.X/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種纖維增強的仿生高分子瓣葉及其制造方法
- 下一篇:一種文件權限管理方法





