gpt4 book ai didi

java - 哪些 JVM 不支持直接 java.nio.ByteBuffer?

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:07 25 4
gpt4 key购买 nike

release notes for Java NIO (在 Java 1.4+ 中)声明支持直接字节缓冲区是一项可选功能。我很好奇哪些 JVM 供应商/风格不支持它? JNI 库是否应该始终为托管 ByteBuffers 编码并将直接 ByteBuffers 降级为优化?

谢谢

最佳答案

我不知道哪些 JVM 实现/不实现直接字节缓冲区。但从某种意义上说,它并不是特别相关...因为某些供应商总是有可能推出新的 JVM,通过支持/不支持直接 ByteBuffers 来改变等式。

Should a JNI library always code for managed ByteBuffers and relegate direct ByteBuffers as an optimization?

这取决于您的目标。

  • 如果您的目标是获得最大的可移植性,那么您的 JNI 代码不应假定直接 ByteBuffer 可用。

  • 如果您的目标是获得最佳性能,那么您的代码可以假定直接 ByteBuffers 将始终可用(如果不可用则中断)。或者,您可以拥有两个不同的 JNI 库(或同一库的条件编译变体),Java 端在运行时根据平台对直接 ByteBuffers 的支持进行选择。

但这一切似乎与现实有些脱节。通过沿着 JNI 路线走下去,您就隐含地走上了不可移植的道路。您已经必须处理(至少)必须针对不同 JVM 和不同目​​标平台重新编译的 native 库。而且我认为在所有支持的平台上进行测试是必不可少的。

总而言之,不要指望 JNI 代码的多平台支持有任何重要的捷径。

关于java - 哪些 JVM 不支持直接 java.nio.ByteBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com