快速业务通道

使用实时Java进行开发,第1部分 探索实时Java的独特功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
运行的应用程序的干扰。

RTSJ 为每个线程引入了分配上下文 的概念。当将一个内存区域用作一个线程的分配上下文时,该线程实例化的所有对象都从该区域分配。RTSJ 指定以下附加的隔离内存区域:

单独的堆 内存区域。

单独的永远空闲 内存区域,其中的内存永远不会被使用。当运行静态初始化器时,初始化类的线程使用此区域作为分配上下文。尽管永远空闲的内存不需要垃圾收集器的注意,但对它的使用没有任何限制,因为其中的内存不会被回收。

范围 内存区域(范围)。范围无需任何垃圾收集活动,它们的内存也可以一次性地完整回收,以供重用。当虚拟机决定不再将一个范围当作任何活动线程的分配上下文区域时,在该范围中分配的对象就会被终结和清除,从而释放分配给它们的内存以供重用。

物理 内存区域根据类型或地址来确定。可以指定将每个物理内存区域当作范围区域重用,或者当作永远空闲区域供一次性使用。这类内存区域可以访问具有特定特征的内存,或从特定设备(比如闪存或共享内存)进行访问。

范围概念对对象引用引入了更强的限制。当释放了一个范围内存块时,其中的对象将被清除,绝不能存在具有指向已释放内存块内部的引用的对象,否则将导致悬摆指针。这在一定程度上是通过实施分配规则来完成的。分配规则指明从非范围内存区域分配的对象不能指向内存区域。这能够确保当释放范围对象时,其他内存区域的对象不会保留对不存在的对象的引用。

图 1 展示了这些内存区域和分配规则:

图 1. 内存区域和对象引用的分配规则

分配规则不允许一个范围内的对象指向另一个范围。但是,这意味着每个对象必须有一个强制范围清除顺序,这个顺序由每个线程内部的一个堆栈维护。除范围以外,该堆栈还包括对进入其中的其他内存区域的引用。只要内存区域成为了线程的分配上下文,它就会被放在线程的范围堆栈的顶部。分配规则指明在堆栈较高位置的范围中的对象可以引用堆栈中较低位置的范围中的对象。因为在顶部的范围会首先被清除。较低位置的范围不允许引用较高位置的范围。

堆栈中的范围顺序与其他线程的堆栈中的范围顺序保持一致。一旦将一个范围放在任何线程的堆栈上,该堆栈中离其最近的范围被当作是它的父范围(如果堆栈中没有其他范围,则将唯一的原始范围 当作父范围)。尽管该范围仍然在堆栈上,但只有父范围保持一致时,才能将该范围放在任何其他线程的堆栈上,这意味着它是其他线程的堆栈中位置最高的范围。换句话说,被使用的范围只能有一个父对象。这可以确保当释放范围时,会按相同顺序进行清除,无论哪个线程执行每个范围的清除任务,并且分配规则会在所有线程中保持一致。

使用实时Java进行开发,第1部分 探索实时Java的独特功能(6)

时间:2011-01-27 IBM Sean C. Foley

如何利用隔离内存区域

可以通过两种方式来使用特定内存区域:将该区域指定为运行线程的初始内存区域(在构造线程对象时指定),或者显式地输入该区域,为其提供一个将执行的 Runnable 对象(将该区域指定为默认区域)。

但使用不同的内存区域时,必须考虑一些特殊的因素,因为这些因素会带来复杂性和可能的风险。必须选择区域的大小和数量。如果范围正在被使用,必须谨慎设计线程的范围堆栈的顺序,还必须考虑分配规则。

调度时间敏感型代码的选项

当使用内存区域而不是堆时,可以选择使用 javax.realtime.NoHeapRealtimeThread (NHRT),这是 javax.realtime.RealtimeThread 的一个子类,它实现的对象可以在不受到垃圾收集器干扰的情况下运行。它们可以在不受干扰的情况下运行,因为它们不能访问从堆分配的任何对象。任何违反此访问限制的尝试都会抛出一个 javax.realtime.MemoryAccessError。

另一个调度选项是异步事件处理器,可以使用它

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号