[发明专利]一种自适应动态代码卸载方法无效
| 申请号: | 201110227094.2 | 申请日: | 2011-08-09 |
| 公开(公告)号: | CN102243596A | 公开(公告)日: | 2011-11-16 |
| 发明(设计)人: | 杨珉;周波;张源 | 申请(专利权)人: | 复旦大学 |
| 主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/455 |
| 代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
| 地址: | 200433 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 自适应 动态 代码 卸载 方法 | ||
1.一种自适应动态代码卸载方法,其特征在于分为三个阶段:方法栈遍历、方法状态迁移和代码卸载;
在方法栈遍历阶段,从虚拟机栈上获得每个方法的栈帧数据;在方法状态迁移阶段,依据所设计的状态机、通过第一阶段得到的方法栈信息进一步获得的方法当前卸载状态以及方法在垃圾回收过程中是否被扫描信息,做出正确的方法卸载状态迁移;在代码卸载阶段,虚拟机遍历整个方法列表,获取每个方法的卸载状态,如果其状态满足状态机所设定的终止态,则对方法的代码进行卸载,将其所占内存释放。
2.根据权利要求1所述的自适应动态代码卸载方法,其特征在于所述方法栈遍历,是在程序使用内存量超过阀值后启动,使用虚拟机已有的栈扫描技术,通过栈指针信息获得每个方法栈帧的数据,这些数据为下一阶段提供数据操作接口。
3.根据权利要求2所述的自适应动态代码卸载方法,其特征在于所述方法状态迁移由两次迁移组成;
第一次迁移发生在完成对每个栈帧扫描结束之前,每个方法的初始状态都设置为 “初始态”,如果方法在栈上被扫描到,则方法状态变为“已扫描”;如果该方法在本次扫描过程中在栈上出现多次,则其状态会停留在“已扫描”;如果该方法在上一次扫描时状态设置为“即将卸载”,那么这次扫描,该方法再次被扫描到,其状态就还原为“初始态”;
第二次迁移发生在代码卸载之前,本次迁移的对象为所有方法;对于在第一阶段扫描到方法,其状态为“初始态”或者“已扫描”,这些方法在此次不会被卸载;对于没有扫描到的方法,其状态为上一次该方法被扫描到时设置的状态,如果该方法状态为“即将卸载”,则该方法状态迁移为“已卸载”;如果为“初始态”则迁移为“即将卸载”,“已扫描”迁移为“初始态”。
4.根据权利要求3所述的自适应动态代码卸载方法,其特征在于所述代码卸载,是根据第二阶段对方法的状态标识,遍历整个方法列表,对所有状态为“已卸载”的方法进行代码卸载;已卸载的方法状态将持续为“已卸载”直到其被重新编译,重新编译后,方法状态被重新设置为“初始态”;代码卸载后的方法,其代码空间被释放,给其他的方法或者数据使用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110227094.2/1.html,转载请声明来源钻瓜专利网。





