当前位置: 首页 > 专利查询>吕戈专利>正文

一种高效的不可变对象执行环境的构建方法及装置制造方法及图纸

技术编号:31169709 阅读:16 留言:0更新日期:2021-12-04 13:30
本发明专利技术提供一种高效的不可变对象执行环境的构建方法及装置,通过不可变对象执行环境的构建方法步骤,对变量的内存进行分配,使存在亲和度关系的同一颜色组下的相邻时序变量之间重用内存块,通过分析可释放的对象和后继的需创建的对象之间的属性相似性,令两个对象公用内存空间,减少占用的处理器和内存资源。减少占用的处理器和内存资源。

【技术实现步骤摘要】
一种高效的不可变对象执行环境的构建方法及装置


[0001]本专利技术涉及计算机领域,特别是涉及一种高效的不可变对象执行环境的构建方法及装置。

技术介绍

[0002]据统计,史上重大bug导致的经济损失已超过10000亿美元,其中最难发现的bug是竞争冒险(race hazard)bug,又名竞态条件、竞争条件。现在软件越来越多的使用多线程技术来实现并发并行,导致竞争冒险类bug也发生得越来越多。
[0003]所以新编程语言往往采用不可变的语义(Environment for Immutability),不可变的语义又被称为不可变的环境、不可变对象的编程环境,下文简称之为 EIMM。在EIMM的约束下,从源头上就根绝了竞争冒险类bug的产生。具体来说,不可变语义有如下特征:
[0004]程序员不再需要关心区分值语义和引用语义,全都按照值语义理解,简化了编程的心智负担,编译器可以选用性能最好的解释;EIMM中,不会形成环引用,可以简化引用计数或者GC等内存管理的实现;程序员不用考虑对象被其他线程改变的情况,所以不可变语义天然对并发并行程序友好,容易编写和理解。
[0005]但是现有EIMM还存在一类性能问题,其中由于值语义需要进行成员复制,如果不作优化,会需要大量的内存重分配,占用不少的处理器和内存资源。
[0006]本专利技术旨在解决以上问题,优化不可变对象环境的性能。

技术实现思路

[0007]本专利技术的目的是解决现有技术的不足,提供一种高效的不可变对象执行环境的构建方法及装置。
[0008]为了解决上述问题,本专利技术采用如下技术方案:
[0009]一种高效的不可变对象执行环境的构建方法,包括如下步骤:
[0010]步骤1:对程序代码进行静态分析,获得变量之间的亲和度;
[0011]步骤2:通过亲和度分析的图着色算法,获得着色方案,并根据着色方案确定寄存器分配方案;
[0012]步骤3:确定着色方案后,把同颜色组的所有节点按时序排列,并对所有节点进行逃逸分析;其中节点表示变量;
[0013]步骤4:应用逃逸分析结果结合变量之间的亲和度以及着色方案,分配内存块。
[0014]进一步的,所述步骤1中,对程序代码进行静态分析过程中,首先需要计算出所有变量的生命期;其次建立变量间的生命周期关系图G(V,E),其中V表示顶点的集合,E表示边的集合,顶点表示变量的生命期,边表示两个变量的生命期存在重叠;最后判断任意两个存在边的变量之间的亲和度关系。
[0015]进一步的,所述变量之间的亲和度关系,包括如下几种不相交的情况:
[0016]情况一:两个变量类型相同且它们指向的都是带有若干属性的对象,并且则两个
被变量指向的对象之间,除了1个属性外其他属性都相同,则认为这两个变量之间亲和度高;
[0017]情况二:对于不满足情况一的两个变量,如果两个变量的类型相同,则认为这两个变量之间亲和度中等;
[0018]情况三:对于不满足情况一和情况二的情形,如果两个变量的指向的内存大小属于同样的分配类,则认为它们之间亲和度低;
[0019]情况四:其他情况,认为两个变量之间无亲和度。
[0020]进一步的,所述步骤2中,分配寄存器包括如下步骤:
[0021]步骤21:将所有变量作为节点,并将所有变量按时序排列;
[0022]步骤22:根据图着色算法,构建多目标优化问题;其中多目标优化问题中包括目标和约束;
[0023]步骤23:通过优化算法,对多目标优化问题求解,得到满足约束的帕累托最优曲线;
[0024]步骤24:通过帕累托最优曲线,获得寄存器的分配方案。
[0025]进一步的,所述步骤22中,构建的多目标优化问题包括两个目标和两个约束,如下所示:
[0026]目标一:最小化Y
j
的和;
[0027]目标二:最大化着色方案的亲和度分值;
[0028]约束1:对任意边对应的两个节点{v
i
,v
l
},都有X
ij
+X
lj
小于等于Y
j

[0029]约束2:对任意节点v
i
,有∑
j
X
ij
=1;
[0030]其中,v
i
,v
l
表示节点,i和l表示时序编号,其中i表示时序为i的节点,l表示时序为l的节点;j表示j号颜色,j∈{1,2...};Y
j
表示j号颜色的着色运用情况,其中如果有任意节点采用j号颜色,则设定Y
j
为1,否则Y
j
为0;X
ij
表示节点v
i
和j号颜色的关系,若节点v
i
采用了j号颜色,则设定X
ij
为1,否则设定X
ij
为0,同理X
lj
表示节点v
l
和j号颜色的关系。
[0031]进一步的,所述目标二中的亲和度分值与变量之间的亲和度呈正相关;着色方案的亲和度分值的计算包括如下步骤:
[0032]步骤221:将所有节点根据颜色进行分组,并将每组节点分别按时序进行排序;
[0033]步骤222:对于每组颜色中的节点,分别计算时序相邻的两个节点之前的亲和度分值,并求和,获得颜色组的亲和度分值;
[0034]步骤223:将每组颜色组的亲和度分值相加,获得着色方案的亲和度分值。
[0035]进一步的,所述步骤4中,分配内存块包括如下步骤:
[0036]步骤41:判断变量A和变量B在该寄存器对应的变量中是否时序相邻;若变量A和变量B时序相邻,则进入下一步;否则结束步骤;
[0037]步骤42:判断时序在前的变量A是否发生逃逸;若变量A没有发生逃逸,则进入下一步;否则减少变量A的引用次数或者释放变量A的内存块,并另外分配B需要的内存块,结束步骤;
[0038]步骤43:变量A没有发生逃逸,变量B根据与变量A的亲和度,对变量A 的内存资源进行分配重用,结束步骤。
[0039]进一步的,所述步骤43中内存资源的分配重用与亲和度的关系为:
[0040]若变量A和比变量B的亲和度高,则变量B重用变量A的内存块,并且在重用的内存块中覆写变量B指向的对象中区别于变量A指向的对象的属性;
[0041]若变量A和变量B的亲和度中等,则变量B重用变量A的内容块,并且在重用的内存块中覆写变量B指向的对象的所有属性;
[0042]若变量A和变量B的亲和度低,则变量B重用变量A的内存块,并且基于变量B对内存块的整体进行覆写;
[0043]若变量A和变量B无亲和度,则减少变量A的引用数或者释放变量A的内存块,并另外分配变量B需要的内存块。
[0044]一种不可变对象执行环境的构建装本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高效的不可变对象执行环境的构建方法,其特征在于,包括如下步骤:步骤1:对程序代码进行静态分析,获得变量之间的亲和度;步骤2:通过亲和度分析的图着色算法,获得着色方案,并根据着色方案确定寄存器分配方案;步骤3:确定着色方案后,把同颜色组的所有节点按时序排列,并对所有节点进行逃逸分析;其中节点表示变量;步骤4:应用逃逸分析结果结合变量之间的亲和度以及着色方案,分配内存块。2.根据权利要求1所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述步骤1中,对程序代码进行静态分析过程中,首先需要计算出所有变量的生命期;其次建立变量间的生命周期关系图G(V,E),其中V表示顶点的集合,E表示边的集合,顶点表示变量的生命期,边表示两个变量的生命期存在重叠;最后判断任意两个存在边的变量之间的亲和度关系。3.根据权利要求2所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述变量之间的亲和度关系,包括如下几种不相交的情况:情况一:两个变量类型相同且它们指向的都是带有若干属性的对象,并且则两个被变量指向的对象之间,除了1个属性外其他属性都相同,则认为这两个变量之间亲和度高;情况二:对于不满足情况一的两个变量,如果两个变量的类型相同,则认为这两个变量之间亲和度中等;情况三:对于不满足情况一和情况二的情形,如果两个变量的指向的内存大小属于同样的分配类,则认为它们之间亲和度低;情况四:其他情况,认为两个变量之间无亲和度。4.根据权利要求3所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述步骤2中,分配寄存器包括如下步骤:步骤21:将所有变量作为节点,并将所有变量按时序排列;步骤22:根据图着色算法,构建多目标优化问题;其中多目标优化问题中包括目标和约束;步骤23:通过优化算法,对多目标优化问题求解,得到满足约束的帕累托最优曲线;步骤24:通过帕累托最优曲线,获得寄存器的分配方案。5.根据权利要求4所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述步骤22中,构建的多目标优化问题包括两个目标和两个约束,如下所示:目标一:最小化Y
j
的和;目标二:最大化着色方案的亲和度分值;约束1:对任意边对应的两个节点{v
i
,v
l
},都有X
ij
+X
lj
小于等于Y
j
;约束2:对任意节点v
i
,有∑
j
X
ij
=1;其中,v
i
,v
l
表示节点,i和l表示时序编号,其中i表示时序为i的节点,l表示时序为l的节点;j表示j号颜色,j∈{1,2...};Y
j
表示j号颜色的...

【专利技术属性】
技术研发人员:吕戈
申请(专利权)人:吕戈
类型:发明
国别省市:

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

1