NIO 最初是为 New Input/Output 的缩写。然而,Java 的 API 已经存在足够长的时间,它不再是新的。
现在普遍使用的缩写来表示Nonblocking I/O (非阻塞 I/O)。另一方面,一般(包括作者)指阻塞 I/O 为
OIO 或 Old Input/Output。你也可能会遇到普通 I/O。
我们已经展示了在 Java 的 I/O 阻塞一例例子。图 1.1 展示了方法 必须扩大到处理多个连接:给每个连接
创建一个线程,有些连接是空闲的!显然,这种方法的可扩展性将是受限于可以在 JVM 中创建的线程数。
当你的应用中连接数比较少,这个方案还是可以接受。当并发连接超过10000 时,contextswitching(
上下文切换)开销将是明显的。此外,每个线程都有一个默认的堆栈内存分配了 128K 和 1M
之间的空间。考虑到整体的内存和操作系统需要处理 100000 个或更多的并发连接资源,这似乎是一个不
理想的解决方案。
1个16G的笔记本:
AVALIBLE: 16 G * 1024 M/G = 16384 M
MIN: 128 K(0.125 M)/Thread * 10000 Thread = 1250 M
MAX: 1024 K(1 M)/Thread * 10000 Thread = 10000 M
最大内存时,占据了一半以上的可用内存。
时间: 2024-10-09 02:19:22