【发布时间】:2016-02-06 13:43:20
【问题描述】:
是否可以在 JVM 内存之外创建一个持久内存对象,可以在 JVM 内部作为对象使用,以便在 JVM 重启后仍然存在?
特别的想法是,我们可以在 JVM 之外分配内存,然后使用 JNI 接口来访问该内存并关联一些 Java 数组。
有人尝试过这种黑客行为吗?任何平台依赖都足够了。
例如,这有助于在 JVM 进程重新启动期间执行内存中 DB 加载的优化。
【问题讨论】:
-
您肯定无法将它分配给真正的 java 数组,例如
float[]左右。但是您可以在 java 中使用外部分配的内存,方法是将它作为直接的 ByteBuffer 返回,它是通过 JNI 使用 NewDirectByteBuffer 创建的。我不确定如何完成 JVM 重启的生存(目前无法明智地尝试一下),但是 如果 这部分可以解决,直接ByteBuffer可能是要走的路。