1. 研究目的与意义、国内外研究现状(文献综述)
研究背景及意义 虚拟机的设计思想早在上世纪60年代就被ibm公司应用在vm/370操作系统中。
smalltalk更是将其发扬光大,此外,更多的公司开始开发虚拟机,虚拟机逐渐变得更加完善。
软件开发者面对的挑战之一是这种逐渐增长的以网络为核心的硬件环境,其包含的设备越来越广泛。
2. 研究的基本内容和问题
研究目标 依据java虚拟机内存布局和垃圾收集方面的原理,采用c语言进行模拟类和对象的内存布局,涉及类相关数据在内存中的分配,如何分配,类和对象之间的关系,父类和子类之间的关系。
进行垃圾收集时,用户线程停止,gc线程执行。
研究内容 1.虚拟机的内存分配在用户使用new 建立一个新对象时,要检查符号引用是否已被加载,没有被加载,执行类加载,本程序对类加载不重点模拟,重点模拟对象空间在java堆中的分配。
3. 研究的方法与方案
研究方法及实验方案 1.主要方法:运用c语言模拟内存分配和垃圾收集,dos界面模拟用户输入,内存溢出和内存分配收集运用dos界面显示。
(1)内存分配:本程序只设计涉及简单的赋值运算,每当使用new建立一个新的对象时,内存为对象和实例数据分配地址,java虚拟机栈的局部变量表的reference类型,初始值为null,修改为在java堆中对象句柄地址,引用位置设置为5个,初始值都为null。
在java堆中的对象句柄池,句柄池为一个二维数组,存放对象实例数据指针和对象类型数据指针,对象位置是随意的,每个对象的数据存放位置是连续的,按页分配。
4. 研究创新点
特色或创新之处 1.根据用户输入内容分配内存,更加真实的模拟JAVA编辑过程 2.对内存布局和垃圾收集部分,进行接近全面的模拟
5. 研究计划与进展
研究计划及预期进展 2015年12月 确定研究范围,大体实现框架 2016年1月 开题,准备开题报告,对研究课题进一步了解 2016年1月 内存分配部分,建立相应数据结构,实现类和对象在内存中的分配 2016年2月 垃圾收集部分具体编程细节,实现GC线程 2016年3月 编写代码,整合程序 2016年5月 撰写毕业论文,准备答辩
