摘要 | 第1-7页 |
Abstract | 第7-8页 |
第一章 引言 | 第8-18页 |
·研究背景和动机 | 第8-9页 |
·相关工作 | 第9-14页 |
·利用自省机制进行更新 | 第9-12页 |
·方法体替换 | 第12页 |
·修改Java虚拟机以支持更新 | 第12-14页 |
·本文工作 | 第14-16页 |
·全文结构 | 第16-18页 |
第二章 动态更新算法介绍 | 第18-23页 |
·Ginseng和安全点更新算法 | 第18-20页 |
·单线程程序的更新 | 第18-19页 |
·单线程程序的更新算法 | 第19-20页 |
·多线程程序的更新算法 | 第20页 |
·POLUS和双向写穿同步更新算法 | 第20-22页 |
·函数的更新 | 第21页 |
·数据结构的更新 | 第21页 |
·新旧版本全局变量的同步 | 第21-22页 |
·更新算法 | 第22页 |
·动态更新对C语言软件的适用性调查 | 第22-23页 |
第三章 Java程序演化的研究 | 第23-29页 |
·使用抽象语法树分析Java软件演化规律 | 第23-26页 |
·分析类型的变化 | 第24-25页 |
·处理多态、接口以及匿名类的问题 | 第25页 |
·泛型类和数组 | 第25-26页 |
·自省(Reflection)和注解(Annotation) | 第26页 |
·枚举类型 | 第26页 |
·讨论Java软件演化过程中动态更新技术的适用性 | 第26-29页 |
·类的改变是否频繁 | 第28页 |
·静态域的改变是否频繁 | 第28页 |
·实验结果分析 | 第28-29页 |
第四章 修改Java虚拟机支持动态更新 | 第29-39页 |
·以线程为单元的更新算法 | 第29-31页 |
·更新算法介绍 | 第29-30页 |
·和POLUS的更新算法的比较 | 第30-31页 |
·基于Harmony的设计 | 第31-32页 |
·动态更新技术所需类加载器的实现 | 第32-33页 |
·类的重命名 | 第32页 |
·访问同一个类的不同版本 | 第32-33页 |
·线程调用栈跟踪 | 第33-34页 |
·线程调用栈跟踪的实现 | 第33-34页 |
·线程的结束和创建 | 第34页 |
·对象保护和同步 | 第34-37页 |
·对象的保护 | 第35页 |
·对象的同步 | 第35页 |
·Java语言层的实现 | 第35-36页 |
·JNI的支持 | 第36-37页 |
·同步类生成工具 | 第37-39页 |
·设计 | 第37-38页 |
·实现 | 第38-39页 |
第五章 在JVMTI上实现动态更新 | 第39-46页 |
·类加载器 | 第39-42页 |
·访问同一个类的不同版本 | 第40-41页 |
·访问重命名的类 | 第41-42页 |
·线程调用栈跟踪 | 第42-45页 |
·利用JNI获取需要的信息 | 第43页 |
·避开JNI调用 | 第43-45页 |
·简化线程跟踪 | 第45页 |
·对象保护和同步 | 第45-46页 |
第六章 实验 | 第46-50页 |
·实验结果 | 第46-47页 |
·无限循环 | 第47-48页 |
·多余引用 | 第48页 |
·更新速度 | 第48-50页 |
第七章 分析及展望 | 第50-55页 |
·和其他动态更新技术的比较 | 第50-51页 |
·期望的Java虚拟机的支持 | 第51-52页 |
·Caprice的改进 | 第52-55页 |
·在初始化更新时避免暂停 | 第52页 |
·把更新中发生的修改精确到方法 | 第52-53页 |
·针对类加载器的优化 | 第53-55页 |
第八章 总结 | 第55-56页 |
参考文献 | 第56-59页 |
致谢 | 第59-60页 |