【技术实现步骤摘要】
一种基于JAVA的智能合约的内存管理方法
本专利技术涉及区块链技术,尤其涉及一种基于JAVA的智能合约的内存管理方法。
技术介绍
智能合约是编程在区块链上的汇编语言,该术语是跨领域法律学者尼克·萨博提出来的,他对智能合约的定义是“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”,换句话说,智能合约就是一个在计算机系统上,当一定条件被满足后,可以被自动执行的合约。通常人们不会自己写字节码,但是会从更高级的语言来编译它,例如用JAVA等类似的专用语言。目前使用JAVA的智能合约的内存管理方法的存在一定缺陷,用户在每次调用合约时,都需要对合约类进行反序列化以及类加载过程,减缓合约的调用时间,增大时延。进一步的,在区块链应用场景下,JAVA虚拟机的垃圾回收机制也有一定的缺陷,目前市面上的JAVA虚拟机会在内存不足情况下会对系统类和用户合约类进行回收。但在区块链场景下对频繁对类进行加载和回收,会严重影响执行效率。
技术实现思路
针对现有技术的不足,本专利技术提出了一种基于JAVA的智能合约内存管理方法,对JAVA合约部署、调用、升级过程的内存进行管理,提高JAVA合约的执行效率,具体技术方案如下:一种基于JAVA的智能合约的内存管理方法,所述的内存管理包括缓存用户合约类和对不同类进行不同的垃圾回收机制,其中,对于缓存用户合约类,JAVA虚拟机在接收到用户合约类解析的请求时,获取用户的合约部署地址和合约类,并将用户的合约类存入到内存中的一个缓存集合中 ...
【技术保护点】
1.一种基于JAVA的智能合约的内存管理方法,其特征在于,所述的内存管理包括缓存用户合约类和对不同类进行不同的垃圾回收机制,其中,/n对于缓存用户合约类,JAVA虚拟机在接收到用户合约类解析的请求时,获取用户的合约部署地址和合约类,并将用户的合约类存入到内存中的一个缓存集合中,所述的缓存集合的索引为合约部署地址,当用户下次调用在这个合约部署地址的合约类时,将合约类从内存中取出,并将合约类的可修改的字段重置后返回给用户,保证合约类在每次返回给用户时都是一致的。/n对不同类进行不同的垃圾回收机制具体包括以下三种情况:/n(1)对JAVA中的系统类,虚拟机不对其进行垃圾回收,所有系统类都在内存中的一块区域进行分配;/n(2)对用户合约类,虚拟机自动地对其内存进行管理,虚拟机在内存中开辟一段缓存,在虚拟机缓存用户合约类时,虚拟机把用户合约类保存在缓存当中去,同时虚拟机对缓存进行缓存淘汰策略,当缓存内的数据的大小超过一定限制后,虚拟机用页面置换算法将某些用户合约类自动清除,以达到控制内存大小的目的;/n(3)对于各个类的实例,虚拟机用JAVA的垃圾回收算法对其清理。/n
【技术特征摘要】
1.一种基于JAVA的智能合约的内存管理方法,其特征在于,所述的内存管理包括缓存用户合约类和对不同类进行不同的垃圾回收机制,其中,
对于缓存用户合约类,JAVA虚拟机在接收到用户合约类解析的请求时,获取用户的合约部署地址和合约类,并将用户的合约类存入到内存中的一个缓存集合中,所述的缓存集合的索引为合约部署地址,当用户下次调用在这个合约部署地址的合约类时,将合约类从内存中取出,并将合约类的可修改的字段重置后返回给用户,保证合约类在每次返回给用户时都是一致的。
对不同类进行不同的垃圾回收机制具体包括以下三种情况:
(1)对JAVA中的系统类,虚拟机不对其进行垃圾回收,所有系统类都在内存中的一块区域进行分配;
(2)对用户合约类,虚拟机自动地对其内存进行管理,虚拟机在内存中开辟一段缓存,在虚拟机缓存用户合约类时,虚拟机把用户合约类保存在缓存当中去,同时虚拟机对缓存进行...
【专利技术属性】
技术研发人员:邱炜伟,尹可挺,李伟,宋宇,
申请(专利权)人:杭州趣链科技有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。