我正在编写一个高性能/低垃圾应用程序 (微秒很重要)具有网络组件。我遇到的一个痛点是内置的Selector Selector for Java NIO的实现。
一些有问题的事情:
select
,因此锁定实际上是无用的。扩展或更改选择器实现是不可能的。大多数类都是最终的,私有和包私有成员位于sun.nio.ch.*
包中。原生方法也使事情变得复杂。
选择器还有其他更现代的实现可能更高效吗?
我检查过的网络库只是使用了内置的Java选择器。任何帮助将不胜感激。
答案 0 :(得分:2)
也许这个lib满足了你的需求?没有自己使用它,但看起来很有希望。 http://www.coralblocks.com/index.php/the-simplicity-of-coralreactor/
答案 1 :(得分:2)
Netty项目有一个使用Native epoll edge-triggered transport的实现:
从4.0.16开始,Netty使用JNI为Linux提供本机套接字传输。这种运输具有更高的性能并且产生更少的垃圾[...]
您可能遇到的一个可能的缺点是,它只能在Linux上使用。
从积极的方面来说,Netty是一个开源项目,可能是源代码会给你一两个提示。