【发布时间】:2021-06-07 10:09:04
【问题描述】:
我正在阅读 HBase 文档并遇到了 Off-heap read path 据我了解,堆外是内存中的一个位置,Java 将字节/对象存储在垃圾收集器范围之外。我还去搜索了一些有助于使用堆外内存的库,并找到了Ehcatche 但是,我找不到任何来自 oracle 或 JVM 的关于他的官方文档。那么这是 JVM 的标准功能还是某种 hack,如果它是用于执行此操作的底层类和技术是什么?
【问题讨论】:
-
JNI 是您在 google 上查找的关键字。本质上,JNI 允许您调用 c 代码/任何其他本机语言,这允许您在 JVM 之外但在同一进程中分配您自己的内存(当然不必是同一进程,但您明白了)。跨度>
-
“off-heap”仅仅意味着“不在堆内”。它既不是标准功能也不是 hack。上述软件仅在逻辑意义上(应用程序观点)存储对象。它不以 JVM 形式存储对象。这是序列化的一种形式。它可以与不存储数据但在调用方法时访问堆外内存的享元对象结合使用(与 ORM 框架相比)。