内存区域的分配方法、装置、存储介质及电子设备与流程
未命名
10-21
阅读:39
评论:0
1.本发明涉及金融科技或其他相关技术领域,具体而言,涉及一种内存区域的分配方法、装置、存储介质及电子设备。
背景技术:
2.目前,在java中,对象的内存分配是通过jvm的垃圾回收器来分配和回收,具体方法如下:
3.1.分配:先在java堆上找到一块足够大的空间来存放容纳该对象,然后进行对象初始化。
4.2.标记:垃圾回收器定期会对堆中的所有存活对象进行标记。它会从根对象开始遍历,将所有与根对象相关联的对象都标记为存活状态。其余对象则被标记为不再使用的状态。
5.3.清除:在标记完成后,垃圾回收器会清除所有未标记的对象,并将它们所占用的内存空间释放出来,以便留给新的对象使用。
6.4.整理:在清除未标记对象之后,可能会留下一些内部碎片。这些碎片是由于对象在使用过程中被分配和回收所引起的。垃圾回收器会对这些内部碎片进行整理,使得java堆中的内存空间变得更有序、更连续。
7.5.移动:在整理过程中,如果存在对象之间的引用关系,那么就会涉及到对象移动的问题,通过对象移动帮助垃圾回收器减少内存碎片的产生。
8.但是,在该方法中的java应用由于频繁的垃圾回收、对象创建和销毁过程中的内存分配释放等,会导致堆内存块大小不一,内存块位置不连续,造成内存合并困难,最终产生大量的内存碎片。并且当出现内存碎片时,垃圾回收器需要花费更多的时间和精力来扫描内存碎片进行垃圾回收,从而影响了垃圾回收器的运行效率,使得垃圾回收器进行内存垃圾碎片回收的时间变长,影响联机响应效率。
9.针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
10.本发明实施例提供了一种内存区域的分配方法、装置、存储介质及电子设备,以至少解决相关技术中采用随机分配内存的方式,容易产生大量的内存碎片的技术问题。
11.根据本发明实施例的一个方面,提供了一种内存区域的分配方法,包括:获取第一交易的交易类型,其中,所述第一交易至少包括:资产交易;依据所述第一交易的交易类型,为所述第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,所述交易对象包括:执行所述第一交易的应用程序内部与所述第一交易关联的对象,所述应用程序的类型包括:java程序,n为正整数;在所述第一交易结束后释放所述目标内存区域,并将所述目标内存区域分配给第二交易关联的s个交易对象,其中,所述第二交易的交易类型与所述第一交易的交易类型相同,s为正整数。
12.进一步地,所述目标内存区域包括:m个子内存区域,m为大于或等于n的正整数,依据所述第一交易的交易类型,为所述第一交易关联的n个交易对象分配目标内存区域,包括:依据所述第一交易的交易类型,确定所述目标内存区域;获取每个交易对象所占用的内存大小;依据每个所述交易对象所占用的内存大小和每个所述子内存区域的大小,将所述目标内存区域内的其中一个所述子内存区域分配给该交易对象。
13.进一步地,获取每个交易对象所占用的内存大小,包括:获取所述第一交易关联的数据库的表结构,其中,所述数据库用于存储所述第一交易的交易数据;基于所述数据库的表结构,确定每个所述交易对象所占用的内存大小。
14.进一步地,在将所述目标内存区域分配给第二交易关联的s个交易对象之前,包括:获取所述交易类型关联的预设切分策略,其中,所述预设切分策略至少包括:内存区域的大小;通过所述预设切分策略将所述目标内存区域切分为m个所述子内存区域。
15.进一步地,在释放所述目标内存区域之后,还包括:对n个所述交易对象所占用的内存大小进行排序,得到排序结果;基于所述排序结果和每个所述交易对象所占用的内存大小,调整所述预设切分策略。
16.进一步地,在所述第一交易结束后释放所述目标内存区域,并将所述目标内存区域分配给第二交易关联的s个交易对象,包括:在所述第一交易结束后,释放所述目标内存区域,并将所述目标内存区域的状态设置为空闲状态;在所述第二交易发起后,将处于空闲状态的所述目标内存区域分配给所述第二交易关联的s个交易对象。
17.进一步地,在将所述目标内存区域的状态设置为空闲状态之后,包括:确定目标回收器,其中,所述目标回收器用于对目标内存区域进行回收;通过所述目标回收器为处于空闲状态的所述目标内存区域设置回收标记。
18.根据本发明实施例的另一方面,还提供了一种内存区域的分配装置,包括:获取单元,用于获取第一交易的交易类型,其中,所述第一交易至少包括:资产交易;第一分配单元,用于依据所述第一交易的交易类型,为所述第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,所述交易对象包括:执行所述第一交易的应用程序内部与所述第一交易关联的对象,所述应用程序的类型包括:java程序,n为正整数;第二分配单元,用于在所述第一交易结束后释放所述目标内存区域,并将所述目标内存区域分配给第二交易关联的s个交易对象,其中,所述第二交易的交易类型与所述第一交易的交易类型相同,s为正整数。
19.进一步地,所述目标内存区域包括:m个子内存区域,m为大于或等于n的正整数,第一分配单元包括:第一确定子单元,用于依据所述第一交易的交易类型,确定所述目标内存区域;获取子单元,用于获取每个交易对象所占用的内存大小;分配子单元,用于依据每个所述交易对象所占用的内存大小和每个所述子内存区域的大小,将所述目标内存区域内的其中一个所述子内存区域分配给该交易对象。
20.进一步地,获取子单元包括:获取模块,用于获取所述第一交易关联的数据库的表结构,其中,所述数据库用于存储所述第一交易的交易数据;确定模块,用于基于所述数据库的表结构,确定每个所述交易对象所占用的内存大小。
21.进一步地,内存区域的分配装置还包括:策略获取单元,用于在将所述目标内存区域分配给第二交易关联的s个交易对象之前,获取所述交易类型关联的预设切分策略,其
中,所述预设切分策略至少包括:内存区域的大小;切分单元,用于通过所述预设切分策略将所述目标内存区域切分为m个所述子内存区域。
22.进一步地,内存区域的分配装置还包括:排序单元,用于在释放所述目标内存区域之后,对n个所述交易对象所占用的内存大小进行排序,得到排序结果;调整单元,用于基于所述排序结果和每个所述交易对象所占用的内存大小,调整所述预设切分策略。
23.进一步地,第二分配单元包括:第一处理子单元,用于在所述第一交易结束后,释放所述目标内存区域,并将所述目标内存区域的状态设置为空闲状态;第二处理子单元,用于在所述第二交易发起后,将处于空闲状态的所述目标内存区域分配给所述第二交易关联的s个交易对象。
24.进一步地,第二分配单元还包括:第二确定子单元,用于在将所述目标内存区域的状态设置为空闲状态之后,确定目标回收器,其中,所述目标回收器用于对目标内存区域进行回收;设置子单元,用于通过所述目标回收器为处于空闲状态的所述目标内存区域设置回收标记。
25.根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述任意一项的内存区域的分配方法。
26.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述任意一项的内存区域的分配方法。
27.在本发明中,获取第一交易的交易类型,其中,第一交易至少包括:资产交易;依据第一交易的交易类型,为第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,交易对象包括:执行第一交易的应用程序内部与第一交易关联的对象,应用程序的类型包括:java程序,n为正整数;在第一交易结束后释放目标内存区域,并将目标内存区域分配给第二交易关联的s个交易对象,其中,第二交易的交易类型与第一交易的交易类型相同,s为正整数。进而解决了相关技术中采用随机分配内存的方式,容易产生大量的内存碎片的技术问题。在本发明中,根据交易类型分配内存区域,相同交易类型的交易可以重复利用该交易类型关联的内存区域,避免了相关技术中频繁的随机分配内存,在释放内存后产生大量内存碎片,难以回收的情况,从而实现了提高内存区域的利用率、减少内存碎片的数量的技术效果。
附图说明
28.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
29.图1是根据本发明实施例的一种可选的内存区域的分配方法的流程图;
30.图2是根据本发明实施例的一种可选的内存区域的分配装置的示意图;
31.图3是根据本发明实施例的一种可选的内存区域的分配流程图;
32.图4是根据本发明实施例的另一种可选的内存区域的分配装置的示意图;
33.图5是根据本发明实施例的一种电子设备的示意图。
具体实施方式
34.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
35.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
36.需要说明的是,本公开中的内存区域的分配方法、装置、存储介质及电子设备可用于金融科技领域处理应用程序中的对象的内存分配的情况下,也可用于除金融科技领域之外的任意领域在处理应用程序中的对象的内存分配的情况下,本公开中对内存区域的分配方法、装置、存储介质及电子设备的应用领域不做限定。
37.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据以及交易数据、内存数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
38.为了便于描述,下面对本技术各实施例涉及的部分术语或名词进行解释:
39.java内存碎片:memory fragmentation,内存碎片,java程序运行过程中,由于频繁的内存分配和释放,导致堆内存中出现了一些无法利用的零散碎片,在这些空隙没有被及时合并和回收的情况,则会产生内存碎片。
40.垃圾回收器,garbage collector,简称gc,是一种自动内存管理机制,用于检测和回收不再使用的内存资源,以便重新分配给其他需要的程序。用于在程序运行过程中,定期检查内存中的对象,找出那些不再被程序所引用的对象,然后释放其所占用的内存空间,使得这些空间可以被重新利用。避免内存泄漏和内存溢出等问题,提高程序的性能和稳定性。
41.本发明可以应用于各金融机构的各种软件产品、控制系统、客户端(包括但不限于:移动客户端、pc机等)控制系统,以软件产品为例进行示意说明,通过移动客户端上安装的软件产品,可以实现金融机构的相关交易(包括但不限于:转账、理财、基金、缴费、查账、广告、推荐等交易)。
42.实施例一
43.根据本发明实施例,提供了一种可选的内存区域的分配方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
44.图1是根据本发明实施例的一种可选的内存区域的分配方法的流程图,如图1所示,该方法包括如下步骤:
45.步骤s101,获取第一交易的交易类型,其中,第一交易至少包括:资产交易。
46.上的第一交易可以包括:金融机构中与资产相关的资产交易,具体交易类型可以包括但不限于:转账、取款、存款等与资金相关的交易。
47.步骤s102,依据第一交易的交易类型,为第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,交易对象包括:执行第一交易的应用程序内部与第一交易关联的对象,应用程序的类型包括:java程序,n为正整数。
48.上述的交易对象可以为第一交易在进行过程中,应用程序内存产生的对象,该应用程序可以包括;java应用程序。
49.为了避免了相关技术中随机的无序分配内存,在交易结束后会产生大量的大小内存块,难以进行合并,浪费存储资源的情况。在本实施例中,可以根据交易的交易类型为每种类型的交易所关联的交易对象量身定制内存区域。
50.上述的目标内存区域可以包括:m个子内存区域,m个子内存区域的大小可以固定,m个子内存区域的大小可以相同,也可以将m个子内存区域划分为几个部分,每个部分内的子内存区域大小相同,相同大小的子内存区域可以连续。
51.在本实施例中,可以依据第一交易的交易类型,为该第一交易关联的n个交易对象分配目标内存区域。
52.步骤s103,在第一交易结束后释放目标内存区域,并将目标内存区域分配给第二交易关联的s个交易对象,其中,第二交易的交易类型与第一交易的交易类型相同,s为正整数。
53.在本实施例中,在第一交易结束后,可以释放目标内存区域,并将该目标内存区域分配给相同交易类型的第二交易关联的s个交易对象,从而减少内存碎片的产生,提高内存空间的利用率。
54.需要说明的是,在本实施例中,针对高频交易的交易类型都可以定制较为固定的目标内存区域,减少相关技术中为了满足应用的多种高频交易不受约束的无序内存分配做法,导致因所需内存块大小不一的情况,从而减少随机穿插在空闲地址空间产生较多碎片,实现提升应用性能的技术效果。在交易结束后,可以实时统计内存对象的大小分布情况,由于相同交易类型的内存区域大小相对固定,因此,对于重复的相同类型交易可以直接复用已经分配的内存,尽量避免频繁进行内存分配和释放,达到了降低生成内存碎片的数量的目的。
55.通过上述步骤,在本实施例中,根据交易类型分配内存区域,相同交易类型的交易可以重复利用该交易类型关联的内存区域,避免了相关技术中频繁的随机分配内存,在释放内存后产生大量内存碎片,难以回收的情况,从而实现了提高内存区域的利用率、减少内存碎片的数量的技术效果,进而解决了相关技术中采用随机分配内存的方式,容易产生大量的内存碎片的技术问题。
56.可选地,目标内存区域包括:m个子内存区域,m为大于或等于n的正整数,依据第一交易的交易类型,为第一交易关联的n个交易对象分配目标内存区域,包括:依据第一交易
的交易类型,确定目标内存区域;获取每个交易对象所占用的内存大小;依据每个交易对象所占用的内存大小和每个子内存区域的大小,将目标内存区域内的其中一个子内存区域分配给该交易对象。
57.在本实施例中,根据交易类型,获取用于存储该交易类型关联的交易对象的目标存储区域,可以依据该目标交易关联的数据库的表结构映射对象,确定每个交易对象占用内存的内存大小,根据每个交易对象需要占用的内存大小,从m个子内存区域中选择子内存区域分配给交易对象,该子内存区域的大小大于或等于该交易对象需要占用的内存的大小,实现了提高内存区域的分配精准度以及内存空间的利用率的技术效果。
58.可选地,获取每个交易对象所占用的内存大小,包括:获取第一交易关联的数据库的表结构,其中,数据库用于存储第一交易的交易数据;基于数据库的表结构,确定每个交易对象所占用的内存大小。
59.在本实施例中,可以获取第一交易关联的数据库的表结构,基于第一交易关联的数据库表结构映射对象,确定该第一交易在应用程序中关联的交易对象占用的内存大小,达到了在进行该第一交易时,可以精准确定应用程序中该第一交易关联的交易对象占用的内存大小的目的。
60.可选地,在将目标内存区域分配给第二交易关联的s个交易对象之前,包括:获取交易类型关联的预设切分策略,其中,预设切分策略至少包括:内存区域的大小;通过预设切分策略将目标内存区域切分为m个子内存区域。
61.在本实施例中,该预设切分策略可以包括内存区域的大小,具体地,该预设切分策略可以用于确定将目标内存区域切分的子内存区域的大小,通过获取该交易类型关联的预设切分策略对该目标内存区域进行切分,切分为m个子内存区域,达到了依据交易类型,确定用于分配给交易对象的子内存区域大小的目的,实现了提高交易对象分配内存区域的合理性、降低内存碎片的数量的技术效果。
62.可选地,在释放目标内存区域之后,还包括:对n个交易对象所占用的内存大小进行排序,得到排序结果;基于排序结果和每个交易对象所占用的内存大小,调整预设切分策略。
63.在本实施例中,还可以依据n个交易对象所占用的内存大小,对n个交易对象进行排序,根据排序结果和每个交易对象所占用的大小,确定将目标内存切分得到的子内存区域的大小,其中,对n个交易对象的内存大小进行排序的排序顺序可以包括:从大到小。
64.例如:可以依据排序结果中占用的内存大小最大的内存大小确定预设切分策略,即可以将目标内存区域切分为该最大的内存大小的子内存区域。还可以依据排序结果中处于多个内存区域大小的区间段集合中每个区间段的交易对象的数量,确定预设切分策略,即将目标内存区域切分为a大小的子内存区域的数量,切分为b大小的子内存区域的数量等等,在本实施例中,根据排队结果,调整预设切分策略,具体切分后得到的子内存区域的大小不做限定,实现了根据交易对象所占用的内存大小,动态调整切分策略的技术效果。
65.可选地,在第一交易结束后释放目标内存区域,并将目标内存区域分配给第二交易关联的s个交易对象,包括:在第一交易结束后,释放目标内存区域,并将目标内存区域的状态设置为空闲状态;在第二交易发起后,将处于空闲状态的目标内存区域分配给第二交易关联的s个交易对象。
66.在本实施例中,在第一交易结束后,可以释放目标内存区域,并将目标内存区域的状态设置为空闲状态;在第二交易发起后,将处于空闲状态的目标内存区域分配给第二交易关联的s个交易对象,可以依据第二交易关联的s个交易对象的大小,确定将目标区域内存中的m个子内存区域分配给s个交易对象,s个交易对象中每个交易对象所占用的空间大小小于或等于分配给该交易对象的子内存区域的大小,达到对相同交易类型的交易复用同类型的内存区域的目的,实现了降低内存碎片产生数量的技术效果。
67.例如:针对数据库返回结果,在满足区间大小的内存地址区间(对应子内存区域)分配给对象(对应于交易对象),交易结束,可以将该内存空间(对应于目标内存区域)重新置为空闲状态;这时,如果下一笔交易进入,如果需要分配相同返回对象大小的内存空间,也可以直接在该内存区域中直接分配,减少内存碎片的回收操作。
68.可选地,在将目标内存区域的状态设置为空闲状态之后,包括:确定目标回收器,其中,目标回收器用于对目标内存区域进行回收;通过目标回收器为处于空闲状态的目标内存区域设置回收标记。
69.上述的目标回收器可以包括:gc垃圾回收器,在本实施例中,为了避免频繁的内存回收影响应用性能的情况,目标回收器可以将处于空闲状态的目标内存区域设置回收标记,但可以不直接进行内存回收,在同一交易类型的交易发起后,再将该目标内存区域分配给新的交易,实现了减少垃圾回收器的垃圾回收时长的技术效果。
70.通过本实施例,可以针对具体交易类型,特别是高频交易,量身定做相对较为固定大小的内存对象块,利用均匀扩展内存空间,减少相关技术中为了满足应用多种高频交易,不受约束的无序内存分配做法,导致因为所需内存块大小不一,从而减少随机穿插在空闲地址空间会产生较多碎片的现象,从而实现提升应用性能的技术效果。
71.在交易结束后,可以实时统计堆内内存对象的大小分布情况,因为相同交易类型的内存区域大小相对固定,对于重复相同类型交易可以直接复用已经分配的内存,尽量避免频繁的内存分配和释放操作。根据交易对应的数据库返回结果,对于相同表结构数据的查询结果可以按整数倍大小的分配实例内存对象,方便待分配内存的管理回收。
72.实施例二
73.本技术实施例二提供了一种可选的内存区域的分配装置,该分配装置可以用于执行本技术实施例一提供的内存区域的分配方法。
74.图2是根据本发明实施例的一种可选的内存区域的分配装置的示意图,如图2所示,该分配装置包括:交易单元内存分类单元(201)、智能内存分配器单元(202)、堆内对象统计单元(203)、java堆分配定义区(204)、gc垃圾回收器(205)、app(应用程序)以及交易数据库。
75.下面结合图2中该分配装置中的各个部分进行说明:
76.交易单元内存分类单元(201):用于根据应用的交易涉及的对象种类以及数据库表结构映射对象,计算交易包含的不同对象(对应于交易对象)占用内存大小,进行区间数据统计,并根据分类因子(对应于预设切分策略)进行动态划分调整内存区域,并输出内存分配策略,其中,该分类因子用于确定划分的每条内存区域的大小。
77.智能内存分配器单元(202):用于根据每个交易涉及的内存分配策略,在内存中不同块区域分配内存并初始化。
78.堆内对象统计单元(203):用于实时统计堆内对象(即交易对象)的大小分布情况,为新交易对象内存自动化分配优化提供优化提示(例如:分类因子)。
79.java堆分配定义区单元(204):用于根据交易对象占用的内存大小,按大小分别定义预定义大小的内存池,以便归类放置。
80.gc垃圾回收器(205)(对应于实施例一中的目标回收器):用于对不同内存区域进行内存回收。
81.在本实施例中,根据交易类型分配内存区域,相同交易类型的交易可以重复利用的该交易类型关联的内存区域,避免了相关技术中频繁的随机分配内存,在释放内存后产生的大量内存碎片,难以回收的情况,从而实现了提高内存区域的利用率、减少内存碎片的数量的技术效果,进而解决了相关技术中采用随机分配内存的方式,容易产生大量的内存碎片的技术问题。
82.图3是根据本发明实施例的一种可选的内存区域的分配流程图,如图3所示,包括:
83.步骤s001:通过交易单元内存分类单元根据应用的交易涉及的对象种类以及数据库表结构映射对象,计算交易包含的不同对象占用内存大小,分配到特定的内存区域。
84.步骤s002:利用智能内存分配单元通过对交易对象进行大小排序,即按对象大小(即交易对象占用的内存大小)为核心统计指标,通过统计交易对象大小,并根据大小区间的分类因子进行动态划分调整,由java堆分配定义区单元初始化分配不同大小区间的内存区域。
85.步骤s003:根据不同的大小分段,在java堆分配定义区单元内不同的内存区域分配对象,如果有可回收的相同的大小区域,由于相同交易类型所需内存大小相同,因此,可以重新将相同交易类型的交易关联的新对象在该区域中直接分配,减少内存碎片的回收动作。
86.步骤s004:同时,读取数据库,针对数据库返回结果,在满足区间大小的内存地址区间分配对象,交易结束,将该内存空间重新置为空闲状态;这时,如果下一笔交易进入,如果需要分配相同返回对象大小的内存空间,也直接在该区域中直接分配,减少内存碎片的回收操作。
87.步骤s005:垃圾回收器随时根据堆内所有对象占用内存的空闲情况,按指定区域进行分块回收标记,但不需要直接进行内存回收,较少垃圾回收时间。
88.步骤s006:待到系统空闲时段,堆内对象统计单元通过堆内统计对象单元统计堆中对象大小排序,通过评估内存空间管理的分类因子是否有必要重新调整,然后重新调整堆内存堆区,并在调整的过程中减少碎片空间。
89.通过本实施例,可以针对具体交易类型,特别是高频交易,量身定做相对较为固定大小的内存对象块,利用均匀扩展内存空间,减少相关技术中为了满足应用多种高频交易,不受约束的无序内存分配做法,导致因为所需内存块大小不一,从而减少随机穿插在空闲地址空间会产生较多碎片的现象,从而实现提升应用性能的技术效果。
90.在交易结束后,可以实时统计堆内内存对象的大小分布情况,因为相同交易类型的内存区域大小相对固定,对于重复相同类型交易可以直接复用同类型已经分配的内存区域,尽量避免频繁的内存分配和释放操作。根据交易的数据库返回结果,对于相同表结构数据的查询结果可以按整数倍大小,分配实例内存对象,方便待分配内存的管理回收。
91.实施例三
92.本技术实施例三提供了另一种可选的内存区域的分配装置,该分配装置中的各个实施单元对应于实施例一中的各个实施例步骤。
93.图4是根据本发明实施例的另一种可选的内存区域的分配装置的示意图,如图4所示,该分配装置包括:获取单元41、第一分配单元42以及第二分配单元43。
94.获取单元41,用于获取第一交易的交易类型,其中,第一交易至少包括:资产交易;
95.第一分配单元42,用于依据第一交易的交易类型,为第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,交易对象包括:执行第一交易的应用程序内部与第一交易关联的对象,应用程序的类型包括:java程序,n为正整数;
96.第二分配单元43,用于在第一交易结束后释放目标内存区域,并将目标内存区域分配给第二交易关联的s个交易对象,其中,第二交易的交易类型与第一交易的交易类型相同,s为正整数。
97.在本技术实施例三提供的内存区域的分配装置中,可以通过获取单元41,用于获取第一交易的交易类型,其中,第一交易至少包括:资产交易;第一分配单元42,用于依据第一交易的交易类型,为第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,交易对象包括:执行第一交易的应用程序内部与第一交易关联的对象,应用程序的类型包括:java程序,n为正整数;第二分配单元43,用于在第一交易结束后释放目标内存区域,并将目标内存区域分配给第二交易关联的s个交易对象,其中,第二交易的交易类型与第一交易的交易类型相同,s为正整数。进而解决了相关技术中采用随机分配内存的方式,容易产生大量的内存碎片的技术问题。在本实施例中,根据交易类型分配内存区域,相同交易类型的交易可以重复利用该交易类型关联的内存区域,避免了相关技术中频繁的随机分配内存,在释放内存后产生大量内存碎片,难以回收的情况,从而实现了提高内存区域的利用率、减少内存碎片的数量的技术效果。
98.可选地,在本技术实施例三提供的内存区域的分配装置中,目标内存区域包括:m个子内存区域,m为大于或等于n的正整数,第一分配单元包括:第一确定子单元,用于依据第一交易的交易类型,确定目标内存区域;获取子单元,用于获取每个交易对象所占用的内存大小;分配子单元,用于依据每个交易对象所占用的内存大小和每个子内存区域的大小,将目标内存区域内的其中一个子内存区域分配给该交易对象。
99.可选地,在本技术实施例三提供的内存区域的分配装置中,获取子单元包括:获取模块,用于获取第一交易关联的数据库的表结构,其中,数据库用于存储第一交易的交易数据;确定模块,用于基于数据库的表结构,确定每个交易对象所占用的内存大小。
100.可选地,在本技术实施例三提供的内存区域的分配装置中,内存区域的分配装置还包括:策略获取单元,用于在将目标内存区域分配给第二交易关联的s个交易对象之前,获取交易类型关联的预设切分策略,其中,预设切分策略至少包括:内存区域的大小;切分单元,用于通过预设切分策略将目标内存区域切分为m个子内存区域。
101.可选地,在本技术实施例三提供的内存区域的分配装置中,内存区域的分配装置还包括:排序单元,用于在释放目标内存区域之后,对n个交易对象所占用的内存大小进行
排序,得到排序结果;调整单元,用于基于排序结果和每个交易对象所占用的内存大小,调整预设切分策略。
102.可选地,在本技术实施例三提供的内存区域的分配装置中,第二分配单元包括:第一处理子单元,用于在第一交易结束后,释放目标内存区域,并将目标内存区域的状态设置为空闲状态;第二处理子单元,用于在第二交易发起后,将处于空闲状态的目标内存区域分配给第二交易关联的s个交易对象。
103.可选地,在本技术实施例三提供的内存区域的分配装置中,第二分配单元还包括:第二确定子单元,用于在将目标内存区域的状态设置为空闲状态之后,确定目标回收器,其中,目标回收器用于对目标内存区域进行回收;设置子单元,用于通过目标回收器为处于空闲状态的目标内存区域设置回收标记。
104.上述的内存区域的分配装置还可以包括处理器和存储器,上述的获取单元41、第一分配单元42以及第二分配单元43等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
105.通过本实施例,可以针对具体交易类型,特别是高频交易,量身定做相对较为固定大小的内存对象块,利用均匀扩展内存空间,减少相关技术中为了满足应用多种高频交易,不受约束的无序内存分配做法,导致因为所需内存块大小不一,从而减少随机穿插在空闲地址空间会产生较多碎片的现象,从而实现提升应用性能的技术效果。
106.在交易结束后,可以实时统计堆内内存对象的大小分布情况,因为相同交易类型的内存区域大小相对固定,对于重复相同类型交易可以直接复用已经分配的内存,尽量避免频繁的内存分配和释放。根据交易的数据库返回结果,对于相同表结构数据的查询结果可以按整数倍大小的分配实例内存对象,方便待分配内存的管理回收。
107.上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来根据交易类型分配内存区域,相同交易类型的交易可以重复利用的该交易类型关联的内存区域,避免了相关技术中频繁的随机分配内存,在释放内存后产生的大量内存碎片,难以回收的情况,从而实现了提高内存区域的利用率、减少内存碎片的数量的技术效果,进而解决了相关技术中采用随机分配内存的方式,容易产生大量的内存碎片的技术问题。
108.上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
109.根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述任意一项的内存区域的分配方法。
110.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述任意一项的内存区域的分配方法。
111.图5是根据本发明实施例的一种电子设备的示意图,如图5所示,本发明实施例提供了一种电子设备50,电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现上述任意一项的内存区域的分配方法。
112.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
113.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
114.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
115.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
116.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
117.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
118.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
技术特征:
1.一种内存区域的分配方法,其特征在于,包括:获取第一交易的交易类型,其中,所述第一交易至少包括:资产交易;依据所述第一交易的交易类型,为所述第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,所述交易对象包括:执行所述第一交易的应用程序内部与所述第一交易关联的对象,所述应用程序的类型包括:java程序,n为正整数;在所述第一交易结束后释放所述目标内存区域,并将所述目标内存区域分配给第二交易关联的s个交易对象,其中,所述第二交易的交易类型与所述第一交易的交易类型相同,s为正整数。2.根据权利要求1所述的分配方法,其特征在于,所述目标内存区域包括:m个子内存区域,m为大于或等于n的正整数,依据所述第一交易的交易类型,为所述第一交易关联的n个交易对象分配目标内存区域,包括:依据所述第一交易的交易类型,确定所述目标内存区域;获取每个交易对象所占用的内存大小;依据每个所述交易对象所占用的内存大小和每个所述子内存区域的大小,将所述目标内存区域内的其中一个所述子内存区域分配给该交易对象。3.根据权利要求2所述的分配方法,其特征在于,获取每个交易对象所占用的内存大小,包括:获取所述第一交易关联的数据库的表结构,其中,所述数据库用于存储所述第一交易的交易数据;基于所述数据库的表结构,确定每个所述交易对象所占用的内存大小。4.根据权利要求2所述的分配方法,其特征在于,在将所述目标内存区域分配给第二交易关联的s个交易对象之前,包括:获取所述交易类型关联的预设切分策略,其中,所述预设切分策略至少包括:内存区域的大小;通过所述预设切分策略将所述目标内存区域切分为m个所述子内存区域。5.根据权利要求4所述的分配方法,其特征在于,在释放所述目标内存区域之后,还包括:对n个所述交易对象所占用的内存大小进行排序,得到排序结果;基于所述排序结果和每个所述交易对象所占用的内存大小,调整所述预设切分策略。6.根据权利要求1所述的分配方法,其特征在于,在所述第一交易结束后释放所述目标内存区域,并将所述目标内存区域分配给第二交易关联的s个交易对象,包括:在所述第一交易结束后,释放所述目标内存区域,并将所述目标内存区域的状态设置为空闲状态;在所述第二交易发起后,将处于空闲状态的所述目标内存区域分配给所述第二交易关联的s个交易对象。7.根据权利要求6所述的分配方法,其特征在于,在将所述目标内存区域的状态设置为空闲状态之后,包括:确定目标回收器,其中,所述目标回收器用于对目标内存区域进行回收;
通过所述目标回收器为处于空闲状态的所述目标内存区域设置回收标记。8.一种内存区域的分配装置,其特征在于,包括:获取单元,用于获取第一交易的交易类型,其中,所述第一交易至少包括:资产交易;第一分配单元,用于依据所述第一交易的交易类型,为所述第一交易关联的n个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,所述交易对象包括:执行所述第一交易的应用程序内部与所述第一交易关联的对象,所述应用程序的类型包括:java程序,n为正整数;第二分配单元,用于在所述第一交易结束后释放所述目标内存区域,并将所述目标内存区域分配给第二交易关联的s个交易对象,其中,所述第二交易的交易类型与所述第一交易的交易类型相同,s为正整数。9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的内存区域的分配方法。10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的内存区域的分配方法。
技术总结
本发明公开了一种内存区域的分配方法、装置、存储介质及电子设备。涉及金融科技领域。其中,该方法包括:获取第一交易的交易类型;依据第一交易的交易类型,为第一交易关联的N个交易对象分配目标内存区域,其中,同一交易类型关联的交易对象所分配的目标内存区域的大小相同,交易对象包括:执行第一交易的应用程序内部与第一交易关联的对象,应用程序的类型包括:Java程序;在第一交易结束后释放目标内存区域,并将目标内存区域分配给第二交易关联的S个交易对象,其中,第二交易的交易类型与第一交易的交易类型相同。本发明解决了相关技术中采用随机分配内存的方式,容易产生大量的内存碎片的技术问题。碎片的技术问题。碎片的技术问题。
技术研发人员:谢波 杨彬 徐博 朱培航
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.08.23
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/