嵌入式实时Java虚拟机的关键技术研究

VIP免费
3.0 李佳 2024-09-23 4 4 364KB 8 页 150积分
侵权投诉
4.2 Java 动态内存机制的局限性
虽然 Java 初是为嵌入式系统设计,但事实上,它却并不能很好的应用
硬实时的应用。其主要原因在于,Java GC 回收特性与实时系统的确定性要求
相冲突,程序员无法控制 GC 何时执行,也不知道 GC 会执行多少时间。尽管如
此,许多嵌入式控制终端并不是硬实时,Java 的可移植性、面向对象性以及开发
简单等优点对于这些实时要求不高的应用仍具有强烈的吸引力。垃圾收集器是
Java 的不可预测性的原因之一。实时 GC 必须能够保证在不影响实时要求的情况
下为新生对象提供可用的内存。而在目前的传统的 Java 虚拟机(JVM)的设计实现
时,在 GC 执行过程中,所有的线程都将被阻塞。
4.2.1“保守”扫描和碎片
统上Java 机主要采保守的或分精确的圾回算法,保守算
法中将那些看似有效的指针认为就是一个实际的引用指针。保守的垃圾收集方法
简单而且易于实现,因而在 Java 虚拟机设计中广泛采用。
但是,保守垃圾收集算法也有其缺陷,它不能确切地断定所有对象的引用
的分布位置。其结果是,它必须保守地假设那些看似要引用一个对象的内存字
(memory word)是事实上的对象引用。这就意味着它可能导致某种错误,例如将
一个整数误认为是一个对象指针,这会造成一些负面影响。
当发错误(不是)存泄预知
以一种对应用程序员来说实质上不可再生(reproduce)或调试(debug)的方式出现。
(当然如果采用适当的措施,该程序仍可正确执行)
第二,当已经导致了某个错误,可能会导致对象内存碎片。由于一个保守的
回收器重新定位对象需要更新所有对对象的引用,这在回收器不能确切地断定
一个表面上的引用就是一个真的引用时,是不可能做到的。不能重新定位对象就
会导致对象内存碎片,而这些碎片将无法回收。在嵌入式系统中这种碎片积累造
成的后果是非常可怕的。
4.2.2 简单的 GC
某些 Java 虚拟机使用“标记并清除”(mark-sweep)算法的垃圾回收器。该收
集器周期性的运行,遍历整个堆内存以查找出可达对象。一旦标记出所有的可达
对象,收集器就收集来自自由内存区的已标记对象。为了避免内存碎片的问题
摘要:

4.2Java动态内存机制的局限性虽然Java最初是为嵌入式系统设计,但事实上,它却并不能很好的应用于硬实时的应用。其主要原因在于,Java的GC回收特性与实时系统的确定性要求相冲突,程序员无法控制GC何时执行,也不知道GC会执行多少时间。尽管如此,许多嵌入式控制终端并不是硬实时,Java的可移植性、面向对象性以及开发简单等优点对于这些实时要求不高的应用仍具有强烈的吸引力。垃圾收集器是Java的不可预测性的原因之一。实时GC必须能够保证在不影响实时要求的情况下为新生对象提供可用的内存。而在目前的传统的Java虚拟机(JVM)的设计实现时,在GC执行过程中,所有的线程都将被阻塞。4.2.1“保守...

展开>> 收起<<
嵌入式实时Java虚拟机的关键技术研究.doc

共8页,预览1页

还剩页未读, 继续阅读

作者:李佳 分类:高等教育资料 价格:150积分 属性:8 页 大小:364KB 格式:DOC 时间:2024-09-23

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 8
客服
关注