JEP 349 - JFR 事件流
JEP349 增强了 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,是一种访问堆内存和非堆内存的安全方式。