一种Java对象分配优化方法、装置及设备制造方法及图纸

技术编号:15124628 阅读:106 留言:0更新日期:2017-04-10 02:51
本发明专利技术公开了一种Java对象分配优化方法、装置及设备,该方法包括:在运行的Java代码中,确定所述Java代码中存在对应关系的被调用函数和调用函数;将所述被调用函数中的非逃逸的Java对象,转存到与所述被调用函数对应的调用函数的函数栈中分配,用于解决对Java对象分配优化的方式局限性较强、需要占用较多的处理资源的问题。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其是涉及一种Java对象分配优化方法、装置及系统。
技术介绍
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。Java平台结构组成如图1所示,包括Java编程语言,主要涉及Java的编程语法;Java文件格式,主要包括各类java的目录、文件及后缀等;Java应用程序接口;Java虚拟机,主要包括Javabytecode的编译优化、加载、解释及运行、管理等模块。其中Java四个模块之间的关系如图2所示。编写Java代码(.java文件),然后将之编译成字节码(.class文件)。最后字节码被装入内存,字节码进入虚拟机,该字节码就会被Java解释器解释执行,或者是被即时代码编译器器有选择的转换成机器码执行。Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上。在Java程序运行时,Java代码中某些对象调用后可能不再继续使用,有些对象调用后仍然会被再次调用。通常情况下,采用逃逸分析技术,识别出可能不再继续使用的对象,然后采用标量替换或函数复制栈上分配的方法对该些分析得到的对象进行优化。但是这两种方式有很多缺陷:首先,标量替换的方式仅适合小对象,符合条件的场景少,会额外参加函数参数,变量格式。其次,函数复制栈上分配的方式,对象较多时需要复制多份函数,会导致代码体积膨胀较大,并且仅适合小函数。多层次的函数调用,需要复制调用栈中的多个函数。由上述可知,通常情况下对Java对象分配优化的方式局限性较强、需要占用较多的处理资源。
技术实现思路
本专利技术提供了一种Java对象分配优化方法、装置及设备,用于解决对Java对象分配优化的方式局限性较强、需要占用较多的处理资源的问题。第一方面,提供了一种Java对象分配优化方法,包括:在运行的Java代码中,确定所述Java代码中存在对应关系的被调用函数和调用函数;将所述被调用函数中的非逃逸的Java对象,转存到与所述被调用函数对应的调用函数的函数栈中分配。结合第一方面,在第一方面的第一种可能的实现方式中,确定所述Java代码中存在对应关系的被调用函数和调用函数,包括:在所述Java代码中,根据Java函数的方法标识MethodID,确定存在对应关系的被调用函数和调用函数。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,将所述被调用函数中的非逃逸的Java对象,转存到与所述被调用用函数对应的调用函数的函数栈中分配,包括:若所述被调用函数中的非逃逸的Java对象的数量大于第一设定值时,将被调用次数大于第二设定值的非逃逸的Java对象存储在函数栈中分配。结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,还包括:将被调用次数小于第二设定值的非逃逸的Java对象存储在堆中分配。结合第一方面至第一方面的第三种可能的实现方式中的任一一种可能的实现方式,在第一方面的第四种可能的实现方式中,还包括:将除所述非逃逸的Java对象之外的其它Java对象存储在堆中分配。第二方面,提供了一种Java对象分配优化装置,包括:确定模块,用于在运行的Java代码中,确定所述Java代码中存在对应关系的被调用函数和调用函数;执行模块,用于将所述被调用函数中的非逃逸的Java对象,转存到与所述被调用函数对应的调用函数的函数栈中分配。结合第二方面,在第二方面的第一种可能的实现方式中,所述确定模块,具体用于在所述Java代码中,根据Java函数的方法标识MethodID,确定存在对应关系的被调用函数和调用函数。结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述执行模块,具体用于若所述被调用函数中的非逃逸的Java对象的数量大于第一设定值时,将被调用次数大于第二设定值的非逃逸的Java对象存储在函数栈中分配。结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述执行模块,还用于将被调用次数小于第二设定值的非逃逸的Java对象存储在堆中分配。结合第二方面至第二方面的第三种可能的实现方式中的任一一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述执行模块,还用于将除所述非逃逸的Java对象之外的其它Java对象存储在堆中分配。第三方面,提供了一种Java对象分配优化设备,包括:存储器,用于存储Java代码,虚拟机,用于运行Java代码,在运行的Java代码中,确定所述Java代码中存在对应关系的被调用函数和调用函数;将所述被调用函数中的非逃逸的Java对象,转存到与所述被调用函数对应的调用函数的函数栈中分配。结合第三方面,在第三方面的第一种可能的实现方式中,所述虚拟机,具体用于在所述Java代码中,根据Java函数的方法标识MethodID,确定存在对应关系的被调用函数和调用函数。结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述虚拟机,具体用于若所述被调用函数中的非逃逸的Java对象的数量大于第一设定值时,将被调用次数大于第二设定值的非逃逸的Java对象存储在函数栈中分配。结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述虚拟机,还用于将被调用次数小于第二设定值的非逃逸的Java对象存储在堆中分配。结合第三方面至第三方面的第三种可能的实现方式中的任一一种可能的实现方式,在第三方面的第四种可能的实现方式中,所述虚拟机,还用于将除所述非逃逸的Java对象之外的其它Java对象存储在堆中分配。通过采用上述技术方案,在运行的Java代码中,确定Java代码中存在对应关系的被调用函数和调用函数;将被调用函数中的非逃逸的Java对象,转存到与被调用函数对应的调用函数的函数栈中分配,这样可以较好地解决对Java对象分配优化的方式局限性较强、需要占用较多的处理资源的问题。附图说明图1为Java平台结构组成示意图;图2为Java四个模块之间的关系示意图;图3为本专利技术实施例中提出的Java代码运行的Java平台结构组成示意图;图4为本专利技术实施例中提出的Java对象分配本文档来自技高网
...

【技术保护点】
一种Java对象分配优化方法,其特征在于,包括:在运行的Java代码中,确定所述Java代码中存在对应关系的被调用函数和调用函数;将所述被调用函数中的非逃逸的Java对象,转存到与所述被调用函数对应的调用函数的函数栈中分配。

【技术特征摘要】
1.一种Java对象分配优化方法,其特征在于,包括:
在运行的Java代码中,确定所述Java代码中存在对应关系的被调用函数
和调用函数;
将所述被调用函数中的非逃逸的Java对象,转存到与所述被调用函数对应
的调用函数的函数栈中分配。
2.如权利要求1所述的方法,其特征在于,确定所述Java代码中存在对
应关系的被调用函数和调用函数,包括:
在所述Java代码中,根据Java函数的方法标识MethodID,确定存在对应
关系的被调用函数和调用函数。
3.如权利要求1或2所述的方法,其特征在于,将所述被调用函数中的
非逃逸的Java对象,转存到与所述被调用用函数对应的调用函数的函数栈中分
配,包括:
若所述被调用函数中的非逃逸的Java对象的数量大于第一设定值时,将被
调用次数大于第二设定值的非逃逸的Java对象存储在函数栈中分配。
4.如权利要求3所述的方法,其特征在于,还包括:
将被调用次数小于第二设定值的非逃逸的Java对象存储在堆中分配。
5.如权利要求1~4任一所述的方法,其特征在于,还包括:
将除所述非逃逸的Java对象之外的...

【专利技术属性】
技术研发人员:胡海亮
申请(专利权)人:华为技术服务有限公司
类型:发明
国别省市:河北;13

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

1