发明名称 一种运行Java程序的方法和装置
摘要 本发明实施例公开一种运行Java程序的方法和装置,该方法包括:Java虚拟机判断RAM中的Java栈是否满足第一预设条件,如果Java栈不满足第一预设条件,则继续运行Java程序;如果Java栈满足第一预设条件,则Java虚拟机将Java栈中的一个或多个帧复制到非易失性存储器中,将Java栈顶指针向Java栈底部方向移动,并继续运行Java程序。Java虚拟机判断Java栈是否满足第二预设条件,如果Java栈不满足第二预设条件,则继续运行Java程序;如果Java栈满足第二预设条件,则Java虚拟机将非易失性存储器中的一个或多个帧复制到Java栈中,将Java栈顶指针向Java栈顶部方向移动。本发明实施例使用非易失性存储器作为Java栈的扩展存储空间,可以避免由于资源不足而导致的异常情况的发生。
申请公布号 CN102681866A 申请公布日期 2012.09.19
申请号 CN201110374578.X 申请日期 2011.11.22
申请人 飞天诚信科技股份有限公司 发明人 陆舟;于华章
分类号 G06F9/445(2006.01)I 主分类号 G06F9/445(2006.01)I
代理机构 代理人
主权项 一种运行Java程序的方法,其特征在于,包括:①、Java虚拟机判断随机存储器RAM中的Java栈是否满足第一预设条件,如果所述Java栈不满足所述第一预设条件,则继续运行Java程序;如果所述Java栈满足所述第一预设条件,则执行步骤②;②、所述Java虚拟机将所述Java栈中的所有帧复制到非易失性存储器中,将Java栈顶指针移动到Java栈底部,并继续运行Java程序;或者,所述Java虚拟机从位于所述Java栈底部的帧开始,选取一个帧或多个连续存储的帧,将选取的帧复制到所述非易失性存储器中,并判断所述Java栈中是否存在未被选取的帧,如果存在一个未被选取的帧,则将所述未被选取的帧复制到所述Java栈中的包括所述Java栈底部在内的存储空间,将所述Java栈顶指针移动到所述Java栈中与所述未被选取的帧被复制到的存储空间相邻且比所述存储空间更接近所述Java栈顶部的位置;如果存在多个未被选取的帧,则按照各个未被选取的帧之间的排列顺序,将所有未被选取的帧复制到所述Java栈中的包括所述Java栈底部在内的连续存储空间,将所述Java栈顶指针移动到与所述所有未被选取的帧中最接近Java栈顶部的帧被复制到的位置相邻且比所述被复制到的位置更接近所述Java栈顶部的位置,并继续运行所述Java程序;如果不存在未被选取的帧,则将所述Java栈顶指针移动到所述Java栈底部,并继续运行所述Java程序;③、当所述Java程序中的Java方法运行结束时,所述Java虚拟机将所述Java栈中与所述Java方法对应的帧从所述Java栈中弹出,判断所述Java栈是否满足第二预设条件,如果所述Java栈满足所述第二预设条件,则执行步骤④;如果所述Java栈不满足所述第二预设条件,则继续运行所述Java程序;④、当所述Java栈中没有帧时,所述Java虚拟机将所述非易失性存储器中的一个或多个帧复制到所述Java栈中,将所述Java栈顶指针移动到与被复制到所述Java栈中的帧中最接近所述Java栈顶部的帧的位置相邻且比所述最接近所述Java栈顶部的帧的位置更接近所述Java栈顶部的位置,并继续运行所述Java程序;当所述Java栈中有帧时,所述Java虚拟机确定需要从所述非易失性存储器复制到所述Java栈中的帧的大小以及所述Java栈中对应的预留存储空间,将所 述Java栈中的帧复制到所述Java栈中与所述预留存储空间相邻且比所述预留存储空间更接近所述Java栈顶部的连续存储空间,将确定的帧复制到所述预留存储空间,将所述Java栈顶指针移动到与所述连续存储空间顶部的帧的位置相邻且比所述顶部的帧的位置更接近所述Java栈顶部的位置,并继续运行所述Java程序。
地址 100085 北京市海淀区学清路9号汇智大厦B座17层