Java 14 - 其他增强功能


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

Java 14 现在允许 java 程序安全有效地访问 Java 堆之外的外部内存。早期的mapDB、memcached java 库提供了外部内存访问。该 JEP 旨在提供一个更清晰的 API,以无缝方式操作所有类型的外部内存(本机内存、持久内存、托管堆内存等)。无论外部内存类型如何,该 JEP 都会照顾 JVM 的安全性。垃圾收集/内存释放操作也应该明确提及。

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