[发明专利]一种反序列化方法、装置以及计算设备有效
申请号: | 201880012901.9 | 申请日: | 2018-06-30 |
公开(公告)号: | CN110914799B | 公开(公告)日: | 2023-02-28 |
发明(设计)人: | 单卫华;李旭良 | 申请(专利权)人: | 华为云计算技术有限公司 |
主分类号: | G06F8/20 | 分类号: | G06F8/20 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 550025 贵州省贵阳市*** | 国省代码: | 贵州;52 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 序列 方法 装置 以及 计算 设备 | ||
本申请公开了一种反序列化方法,在进程的内存空间中创建第一对象的第一对象壳,所述第一对象壳包括第一对象头和第一对象体;获取所述第一对象的序列化结果;根据所述第一对象壳,反序列化所述第一对象的序列化结果以得到所述第一对象;所述进程使用完毕所述第一对象后,释放所述第一对象壳,所述第一对象壳可以用于反序列化后续接收的序列化结果。通过对象壳的复用,提升了反序列化的效率。
技术领域
本申请涉及计算机技术领域,尤其涉及反序列化方法以及相应的装置和用于执行该方法的计算设备。
背景技术
面向对象的编程语言,例如Java、Python,大量运用于商业场景中,每个对象可以是客户个人信息、产品的属性信息等。这些对象在使用过程中需要对大量对象进行序列化和反序列化操作。其中,反序列化操作要求在内存空间中重建对象。现有技术中,反序列化出一个对象要求在内存空间中重建整个对象,效率低下。
发明内容
本申请提供了一种反序列化方法,该方法提升了反序列化的效率。
本申请的第一方面提供了一种反序列化方法,该方法由计算设备执行,初始化阶段中,在进程的内存空间中创建第一对象的第一对象壳,所述第一对象壳包括第一对象头和第一对象体,所述第一对象头包括所述第一对象的类型指针,所述第一对象体中为所述第一对象的元素预留了空间,其中,基本类型的元素的预留空间的大小取决于该元素属于哪个基本类型,不同基本类型的元素所需的空间大小可能不同,引用类型的元素的预留空间内存储指针,因此引用类型的元素的预留空间的大小一般为32 bit或64 bit;获取所述第一对象的序列化结果;获取所述第一对象壳,根据所述第一对象壳反序列化所述第一对象的序列化结果以得到所述第一对象。可选的,所述进程使用完毕所述第一对象后,还可以释放所述第一对象壳,以供后续反序列化使用。该方法通过预创建对象壳,避免了反序列化过程中对象壳的创建,提升了反序列化的效率。同时,通过释放对象壳,使得反序列化的过程中能够复用对象壳,避免了每次反序列化都要重新创建对象壳。
在一种可能的实现方式中,所述第一对象壳位于所述进程的老年代内存空间。第一对象壳可以在新生代内存空间创建,然后老化到老年代内存空间,也可以直接在老年代内存空间创建。通过利用位于老年代内存空间的对象壳,降低了新生代垃圾回收、老年代垃圾回收以及内存溢出的可能性,提升了反序列化的效率,增强了进程运行的稳定性。
在一种可能的实现方式中,所述方法还包括:所述第一对象壳位于所述第一对象所属的类对应的对象池中,所述第一对象所属的类对应的对象池中包括至少一个对象壳;从所述第一对象所属的类对应的对象池中选择空闲的所述第一对象壳以反序列化所述第一对象的序列化结果;所述进程使用完毕所述第一对象后,释放所述第一对象壳,被释放的所述第一对象壳为空闲的。通过预先在所述进程的内存空间中创建所述第一对象所属的类对应的对象池,反序列化出一个对象的过程中从对象池中借用一个空闲的对象壳,对象使用完毕后归还借用的对象壳至对象池,避免了整个对象的重新创建。
在一种可能的实现方式中,所述释放所述第一对象壳包括:清除所述第一对象体中为所述第一对象的元素预留的空间。清除所述第一对象体中为所述第一对象的元素预留的空间即清除该预留的内存空间内存储的内容,清除后的内存空间仍然属于该对象体。由于相同对象的对象头相同,因此释放所述第一对象壳的过程中,不清除第一对象头中存储的类型指针。清除对象体的空间保证了后续该对象壳能够被正确复用,保留对象头节约了对象头的填充时间,进一步提升了反序列化的效率。
在一种可能的实现方式中,所述根据所述第一对象壳,反序列化所述第一对象的序列化结果以得到所述第一对象包括:为所述第一对象创建引用,所述引用指向所述第一对象壳;将所述第一对象的序列化结果填入所述第一对象体中为所述第一对象的元素预留的空间。通过创建引用,将序列化结果填入对象体,结合预先填充号的对象头,对象被完整反序列化出来,反序列化出来的对象可供进程使用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为云计算技术有限公司,未经华为云计算技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201880012901.9/2.html,转载请声明来源钻瓜专利网。