《JDK10新特性官方文档》在可选内存设备上的分配堆内存
8171181
概要
允许HotSpot VM在用户指定的备用内存设备(如NV-DIMM)上分配Java堆对象。
动机
有了便宜的NV-DIMM内存,未来的系统可能配备异构内存架构。这种技术的一个例子是英特尔的3D XPoint。除DRAM之外,这种架构将具有一种或多种具有不同特性的非DRAM存储器。
该JEP针对与DRAM具有相同语义的可替代存储器设备,包括原子操作的语义,因此可以替代DRAM用于对象堆,而无需对现有应用程序代码进行任何更改。所有其他内存结构,如代码堆,元空间,线程堆栈等将继续驻留DRAM中。
此提议的一些使用案例是:
1.在多JVM部署中,某些JVM,如守护进程,服务等的优先级低于其他进程。与DRAM相比,NV-DIMM可能具有更高的访问延迟。低优先级进程可以为堆使用NV-DIMM内存,允许高优先级进程使用更多DRAM。
2.大数据和内存数据库等应用程序对内存的需求不断增加。这种应用可以将堆内存分配在NV-DIMM,因为与DRAM相比,NV-DIMM可能具有更大的容量,更低的成本。
描述
一些操作系统已经通过文件系统暴露非DRAM内存。NTFS DAX模式和ext4 DAX正是这类例子。这些文件系统中的内存映射文件可绕过页面缓存并提供虚拟内存到设备物理内存的直接映射。
要在这样的内存中分配堆,我们可以添加一个新选项-XX:AllocateHeapAt = path 。此选项将采用文件系统的路径并使用内存映射来实现在内存设备上分配堆对象。 JEP不打算在多个正在运行的JVM之间共享一个非易失性区域,或者重用一个区域来调用JVM。
现有堆相关参数(如-Xmx,-Xms等)和垃圾收集相关参数将继续像以前一样有效。
为确保应用程序实现的安全性,必须确保在文件系统中创建的文件是:
1.受正确权限保护,以防止其他用户访问它。
2.在任何可能情况下,应用程序终止时删除。
测试
测试不一定需要任何特殊的记忆;它可以在例如ramfs或tmpfs的内存中的文件系统上执行。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/66244.html
jd安全微软英特尔相关文章
- 使用 Node.js Stream API 减少服务器端内存消耗的一个具体例子
- C++ 新特性学习(八) — 原子操作和多线程库[多工内存模型]
- 【Linux 内核】Linux 内核体系架构 ( 进程调度 | 内存管理 | 中断管理 | 设备管理 | 文件系统 )
- 【算法】递归算法 ① ( 使用递归推导斐波那契数列 | 递归内存开销分析 | 递归三要素 : 定义 拆解 出口 )
- MySQL:利用内存中的临时表处理数据(mysql临时表内存表)
- 内存 使用Linux虚拟机查看内存状态(linux虚拟机查看)
- 如何使用 Bash 脚本从 SAR 报告中获取 CPU 和内存使用情况
- Android调试器爆漏洞,可获取设备内存数据
- Rowhammer:针对物理内存的攻击可以取得 Android 设备的 root 权限
- 掌握Oracle内存管理,跨越进程边界(oracle内存管理进程)
- 解决云Redis内存过高的方法(云redis内存过高问题)
- Redis内存清除策略探索(内存清除策略redis)
- Redis内存需求多大才够(redis 需要多大内存)