java - 替代 Java 选择器实现

标签 java java-native-interface nio

我正在编写一个高性能/低垃圾应用程序 (微秒很重要)具有网络组件。我遇到的痛点之一是 Java NIO 的内置选择器的实现。

一些有问题的事情:

  • 大量对象创建。几乎每次调用 selectedKeys() 都会创建很多对象。迭代器、装箱/拆箱,应有尽有。大多数其他情况都不是问题,但我正在编写的应用程序需要尽可能少地产生垃圾。
  • 层层锁定和同步。在构建 selectorImpls 时,一堆 Java 锁原语并不存在。结果,它很笨重而且不是最佳的。在我的用例中,只有一个线程调用 select,所以锁定实际上是无用的。

扩展或更改选择器实现是行不通的。大多数类都是最终类,私有(private)成员和包私有(private)成员位于 sun.nio.ch.* 包中。 native 方法也使事情复杂化。

是否有任何其他可能性能更高的更现代的选择器实现?

我检查过的网络库只是在幕后使用内置的 Java 选择器。任何帮助将不胜感激。

最佳答案

也许这个库能满足您的需求?我自己没用过,但看起来很有前途。 http://www.coralblocks.com/index.php/the-simplicity-of-coralreactor/

关于java - 替代 Java 选择器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43807568/

相关文章:

java - c++ 插件 -> JNI -> Java 类路径

java - "system-dependent default"线程池是什么?

java - 为什么 NIO 选择器总是监听端口列表中的最后一个端口?

java - 为什么即使调用了 repaint(),该程序也不重新绘制小程序的某个部分

java - 从流中收集到多图

android - java.lang.NoSuchFieldError : no "Ljava/lang/String;" field JNI 错误

Android NDK 构建库在设备上崩溃但在模拟器中运行良好

java nio注册写操作后无法读取

java - 配置 ReSTLet 以在 Google App Engine 上返回 JSP?

java - Boolean.FALSE 不等于 false