[发明专利]一种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.vipzhuanli.com/pat/books/202111122033.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种纤维增强的仿生高分子瓣叶及其制造方法
- 下一篇:一种文件权限管理方法





