Ele*_*eco 11 java garbage-collection real-time
我听说过具有严格延迟要求的Java程序,其中"新"指令永远不会 - 或者很少使用(因为没有新的=>没有对象 - >没有GC =>改进的延迟)...而是处理所有业务逻辑使用原语.
我无法在网上找到这种技术的参考资料......任何关于讨论这种技术或代码片段的网页的链接都将非常感激.
and*_*soj 14
更新(2012年3月):虽然没有公开声明,但似乎Oracle已关闭其JavaRTS组.
您应该看到的两个主题是Java的实时规范(JSR-1,JSR-282)和Java的安全关键规范(JSR-302),(aonix页面).RTSJ提供了在你的问题中进行仔细记忆管理的资源,尽管RTSJ的大多数用户可能容忍比"全原语"方法更大的抖动(并且,对于这种容忍,他们得到了通过使用RTGC获得GC的好处.对于有限分配(限制何时/何地/可以使用多少次new
)的一些示例,搜索"rtsj范围内存规则",这是关于该主题的示例学术论文.你还应该看看" 作为尝试以(相对)干净的方式解决Java中的这些高频率,低延迟约束的示例.
有关在交易环境中使用JavaRTS的特定新故事,请参见此处.有关如何从JavaRTS中获取最确定性行为的一些说明,请参见此处.
安全关键用户更有可能受到这些限制,而SC-Java(预期)部分是RTSJ的缩小版本.您可以在Doug Locke的2007年JTRES状态幻灯片中看到专家组正在查看的一些示例.
有些人生产用于此环境的JVM. Aonix/Atego的PERC ; 艾卡斯'牙买加VM ; Apogee的Aphelion.Sun/Oracle JavaRTS更多地面向可以容忍(并受益于)不太严格的约束的大型应用程序.
虽然您引用的"全原语"方法是此类编程的一种极端形式,但您最有可能在上述参考之一中找到有关此主题的资源.
对于"原语中的业务逻辑?" 在我之上的反对者,请注意在IBM汇编程序中实现了大量的IRS税务业务逻辑,并且正在考虑使用诸如Java的许多"企业"层来包装(而不是替换!)该逻辑.把它放在你的烟斗里吸烟吧.
我不能在这里引用任何细节,但有许多使用Java的防御应用程序(通常是RTSJ的一种)对内存分配有非常严格的限制,而且大部分代码都是静态分配的,原始的.信号处理等...我在我所知道的系统上搜索了开源材料,这些文档(特别参见参考文献部分)指出了这些应用程序的一些具体示例.