Chronicle中Java9Memory的来源

Source of Java9Memory in Chronicle

我对 openHFT 项目使用的堆外机制很好奇,正在寻找下面的 class 文件(在 github 中找不到任何地方),如源代码所定义这里:

Class<? extends Memory> java9MemoryClass = Class
                    .forName("software.chronicle.enterprise.core.Java9Memory")
                    .asSubclass(Memory.class);

来自 github 存储库:https://github.com/OpenHFT/Chronicle-Core/blob/master/src/main/java/net/openhft/chronicle/core/OS.java

我的问题是:这个 class 是开源的吗?如果是,它是如何工作的?谢谢

Java 9 支持是单独的,因为它是一个移动的目标,但是我们会将其添加为子模块,如果您需要 运行 在 java 9 上,您可以将其包含在内。这项工作仍在进行中。

此 class 不可用,将来会被删除。

我们目前 Java9 兼容性的方法是发布针对语言级别 1.8 构建的 OpenHFT 工件。 Java 运行时中的任何不兼容性(例如 class 重命名)将通过使您的程序需要一个包含 Java9 特定覆盖的 Java9 模块来处理。

回答您关于 class 如何工作的问题 - Chronicle 库将在版本 9 JVM 上 运行 时继续使用 sun.misc.Unsafe。有必要手动将导出添加到命令中以允许这样做,例如:

--add-exports=java.unsupported/sun.misc=ALL-UNNAMED