我正在探索帮助我的内存密集型应用程序的选项,并且在这样做时我遇到了 Terracotta 的BigMemory。据我所知,它们利用了非垃圾收集的堆外“本机内存”,由于序列化/反序列化问题,这显然比堆存储慢 10 倍。在阅读 BigMemory 之前,我从未听说过普通 JNI 之外的“本机内存”。尽管 BigMemory 是一个值得进一步考虑的有趣选项,但如果可以绕过序列化问题,我对使用本机内存可以完成的事情很感兴趣。
ByteBuffer
当没有序列化问题时(例如,如果我将它与巨大的byte[]
. 还是垃圾收集等的变幻莫测使这个问题无法回答?我知道“测量它”是一个常见的答案,但恐怕我不会设置一个有代表性的测试,因为我还不够了解 Java 中的原生内存是如何工作的。