我阅读了一些关于 SO Java 7 支持内核绕过的评论。但是,在搜索该主题时,我没有看到任何直接的例子。
有没有人有 Java 7 执行内核绕过的示例?我有兴趣看看
这个相关问题的答案提到 SolarFlare 具有 Java 绑定:Networking with Kernel Bypass in Java。
就 Java 7 而言,核心库中并没有对这种东西的支持。内核绕过过于系统/供应商特定,无法包含在标准 API 中。
您可以做其他不涉及内核绕过的事情来提高 Java 中的网络吞吐量。例如使用 NIO Buffer 和 Channel APIs ...但是,您的典型 Java“框架”往往会阻碍这一点...仅将 Stream / Reader 和其他高级 I/O 抽象暴露给“应用程序”代码.
(我还认为,如果您有一个应用程序,其中网络延迟和吞吐量足够关键,以至于内核绕过是值得的,那么您应该使用“更接近金属”的编程语言。Java 更适合存在最大问题的应用程序是应用程序的复杂性...不是通过网络快速移动大量位。)
看看github上的Onload Extensions API JNI Wrapper 。作者似乎专门研究内核绕过。
内核绕过是一种在读取/写入外部数据源(例如文件或网络)时避开内核的方法。
相反,您可以直接访问数据存储,而无需让所有字节通过操作系统内核运行。这通常更快但也不太安全,因为整个过程不再受操作系统监督。
假设:关于 Java,kernel
(可以)表示JVM
.
我在这方面找到了一篇非常好的文章。