System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种对象控制信息和数据信息分离的对象内存布局方法技术_技高网
当前位置: 首页 > 专利查询>复旦大学专利>正文

一种对象控制信息和数据信息分离的对象内存布局方法技术

技术编号:44208013 阅读:0 留言:0更新日期:2025-02-06 18:41
本发明专利技术属于计算机内存管理技术领域,具体为一种对象控制信息和数据信息分离的对象内存布局方法。本发明专利技术将对象信息分为控制信息与数据信息;控制信息包括对象的元数据和引用类型成员变量;数据信息仅为非引用类型成员变量;在内存分配空间中划分出控制内存空间和数据内存空间;在为对象分配内存时,将数据信息和控制信息分配到对应的内存空间中,并设置相应的数据块引用;其步骤包括对象创建、对象访问、垃圾回收和内存交换和压缩。当访问控制信息时,只在控制内存空间中进行内存访问;当需要交换出或压缩内存时,优先交换出和压缩数据内存空间,尽量在内存中保留控制信息,从而实现控制信息和数据信息的分离管理,提高垃圾回收和对象访问效率。

【技术实现步骤摘要】

本专利技术属于计算机内存管理,具体涉及托管语言虚拟机的对象内存布局优化方法。


技术介绍

1、托管语言运行时提供托管环境以管理对象从分配到回收的整个生命周期的内存管理。内存分配器为对象分配空间,并进行必要的初始化。垃圾回收器定期自动检测对象的存活情况,释放死亡对象占据的内存空间,并移动存活对象到新的空间减少内存碎片,释放旧的空间以供内存分配器分配对象使用。当系统中的内存不足时,系统中的内存交换机制和内存压缩机制会根据一定的算法(如最近最久未使用lru或先进先出fifo等)选取内存页将其换出或压缩,缓解内存压力。

2、内存分配器为一个对象分配内存空间时,将对象的元数据、引用类型和非引用类型的成员变量作为一个整体,按父类到子类顺序分配在一整块连续的内存空间中。系统服务(如垃圾回收等)或应用根据元数据信息确定引用字段或数据字段的位置,完成对引用字段指向的对象的访问或自身数据字段的访问。

3、当系统内存不足时,系统中的内存交换机制和内存压缩机制会被触发。内存交换机制和内存压缩机制都以内存页为单位释放内存。内存交换机制和内存压缩机制采用最近最久未使用(lru)或先进先出(fifo)等算法选取目标页。内存交换机制将内存页换出到硬盘后释放该页占用的内存,内存压缩机制将目标页压缩到硬盘后释放该页占用的内存。当目标页中的数据被访问时,内存交换机制将数据所在的内存页从硬盘换入到内存。

4、在托管语言运行时中,对象的控制信息和数据信息的使用方式不同,现有的对象的混合内存布局降低内存管理的效率。内存分配器将对象作为整体分配,如果发生换出或压缩,则作为整体被换出或压缩。然而,一个对象的控制信息和数据信息访问方式是完全不同的。首先,在应用使用时控制信息会被更多的访问,如查找子对象的字段时需要访问控制信息。其次,一些系统服务,也会单独访问控制字段,如垃圾收集器被触发后需要对象的控制字段做遍历,确定内存中对象的可达性,从而对不可达的对象完成垃圾回收。然而,现有内存管理机制将对象的控制信息和数据信息混合布局,在进行换出或压缩时,都将对象控制信息和数据信息作为整体换出或压缩。而当对控制信息做访问时,需要将对象的控制信息和数据信息整体换入或解压缩。将对象信息混合存放增加了应用或系统服务对对象控制字段访问过程的延迟。

5、除此之外,现有的对象的混合内存布局对应用访问内存的效率也有影响。在托管语言运行时中,对象的访问按照对象中的引用类型的成员变量形成访问链。在访问链中,任一对象不在内存中,都会触发内存的换入或解压缩。将对象信息混合存放导致访问链经由的对象虽然不是应用的最终访问目标,访问过程也只需要访问该对象的控制字段,但如果该对象被压缩或换出,还是会作为整体换入和解压缩。将对象信息混合存放增加了对象访问的延迟。

6、当前针对托管语言运行时内存管理的优化的专利技术有两类。一类是优化垃圾回收机制,田琳专利技术了依照清除条件清除对象的方法降低垃圾回收的触发频率(cn112433809a),高建武专利技术了通过检测终端的显示界面是否处于滑动停止状态并在停止状态时执行内存垃圾回收过程的方法减少垃圾回收对程序运行的性能影响(cn106201358a)。另一类是优化交换机制,王司宇专利技术了通过感知内存回收情况扩大进程的查杀范围的方法提升回收内存的效率(cn117130767a),常演等专利技术了配置三种异步的交换线程分别管理不同类型页面的内存的内存管理方法(cn116954876a)。

7、名词解释

8、托管语言:指在特定的运行时环境中,将代码交给托管平台来执行和管理的编程语言,通常提供了内存管理、安全性和其他运行时功能。

9、托管语言运行时:托管语言的执行环境,提供了在特定平台上执行和管理托管语言代码所需的功能和服务,如内存管理、安全性、线程管理等。

10、内存管理:用于分配和释放内存资源,以确保程序可以有效地使用内存,并防止内存泄漏和内存溢出等问题。

11、对象:对象是托管语言中内存管理的基本单位。在托管语言中,对象的一般表示由元数据和成员变量组成。元数据包含了对象的类型、多线程锁等。复杂的对象中,成员变量有引用和非引用的成员变量两部分。引用有时又被称为指针,指向其他对象。托管语言运行时的内存空间中会有很多对象实例。

12、对象的控制信息:对象的元数据、引用类型的成员变量和指向数据块的引用。

13、对象的数据信息:对象的非引用类型的成员变量。

14、垃圾回收器:一种自动的内存管理机制,用于检测和释放不再使用的内存资源,以减少程序员对内存管理的负担并防止内存泄漏。

15、内存交换:将内存中的数据换出到硬盘上,以释放内存资源。当数据被访问时,从硬盘换入到内存。

16、内存压缩:将内存中的数据进行压缩,以减少内存占用空间。当数据被访问时,对数据解压缩。


技术实现思路

1、本专利技术的目的在于提出一种将对象控制信息和数据信息进行分离的对象内存布局方法,以提升对象访问或托管语言运行时系统服务的效率。

2、在传统的对象内存布局中,内存分配器在为对象分配内存时,会分配一个连续的内存块来存储对象的控制信息和数据信息。如图1所示。对象的元数据和各成员变量在内存块中的先后顺序取决于托管语言运行时的实现。

3、与此传统方式不同,本专利技术修改了托管语言运行时中对象的内存布局,具体地,将对象的信息分为控制信息和数据信息,并将两部分信息在内存分配时分离;将内存中的可分配空间分为控制内存空间和数据内存空间;当一个对象进行内存分配时,在控制内存空间为控制信息分配空间,在数据内存空间为数据信息分配空间。当内存不足时,优先压缩数据内存空间。从内存组织出发来解决垃圾回收器和交换机制本源性的冲突问题。

4、本专利技术将对象信息分为控制信息与数据信息两类,如图2所示。其中,对象的控制信息包括对象的元数据和引用类型成员变量;数据信息仅包含非引用类型成员变量。为保证从控制信息正确找到数据信息,控制信息部分增加指向数据信息的数据块引用;在新型内存分配方案中,将控制信息和数据信息分配到不同的内存区域中,以提高内存访问效率和对象管理的便捷性。这种方案旨在解决现有内存分配方案中控制信息与数据信息混杂带来的问题。如图3所示,本专利技术在内存分配空间中划分出控制内存空间和数据内存空间。在为对象分配内存时,将数据信息分配到数据内存空间,控制信息分配到控制内存空间,并设置相应的数据块指针。

5、本专利技术提出的将对象控制信息和数据信息进行分离的对象内存布局方法,包括对象创建、对象访问、垃圾回收和内存交换和压缩等,具体步骤如下:

6、(1)对象创建:当需要创建一个新对象时,首先根据对象的控制信息和数据信息大小,分别在控制内存空间和数据内存空间中动态分配相应的内存空间;然后在控制信息填充对象的元数据和数据块指针信息;之后,根据新建对象的要求,初始化控制信息和数据信息中的成员变量;

7、(2)对象访问:当需要访问一个对象本文档来自技高网...

【技术保护点】

1.一种对象控制信息和数据信息分离的对象内存布局方法,其特征在于,将对象信息分为控制信息与数据信息两类;其中,对象的控制信息包括对象的元数据和引用类型成员变量;数据信息仅为非引用类型成员变量;在内存分配空间中划分出控制内存空间和数据内存空间;在为对象分配内存时,将数据信息分配到数据内存空间,将控制信息分配到控制内存空间,并设置相应的数据块指针;具体步骤如下:

【技术特征摘要】

1.一种对象控制信息和数据信息分离的对象内存布局方法,其特征在于,将对象信息分为控制信息与数据信息两类;其中,对象的控制信息包括对象的元数据和引用类型成员变量;数据信息仅为非引用类...

【专利技术属性】
技术研发人员:张为华蒋金虎鲁云萍宋怡景
申请(专利权)人:复旦大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1