Java14 - 其他增强功能

JEP 349 - JFR 事件流

JEP 349 增强了 JDK Flight Recorder 数据,以持续监控进程内和进程外的应用程序。

直到 Java 13,为了使用 JFR 数据,用户需要开始记录,停止并将内容转储到磁盘,然后解析记录文件。 这种方法非常适合应用程序分析,但更适合监控。

现在包 jdk.jfr.consumer 被增强为异步订阅事件。 使用此订阅,用户可以直接从磁盘存储库读取或流式传输录制数据,而无需转储录制文件。


JEP 352 - 非易失性映射字节缓冲区

通过这个 JEP,Java 13 添加了一种新的 JDK 特定文件映射模式,以允许使用 FileChannel API 创建 MappedByteBuffer 实例,并且可以访问非易失性内存。 非易失性存储器或 NVM 是一种持久性存储器,用于永久存储数据。

现在 MappedByteBufer API 支持直接内存更新并提供持久性保证,这是块文件系统、日志系统、持久对象等更高级别 API 实现持久数据类型所必需的。


JEP 370 - 外部内存访问 API

Java14 现在允许 Java 程序安全高效地访问 Java 堆之外的外部内存。 早期的 mapDB、memcached java 库提供了外部内存访问。 这个 JEP 旨在提供一个更简洁的 API,以无缝方式操作所有类型的外部内存(本机内存、持久内存、托管堆内存等)。 这个 JEP 负责 JVM 的安全,不管外部内存类型如何。 还应明确提及垃圾收集/内存释放操作。

此 API 基于三个主要的抽象 MemorySegment、MemoryAddress 和 MemoryLayout,是访问堆内存和非堆内存的安全方式。