使用SO_RCVBUF的jvm大于系统最大值

时间:2019-05-17 21:31:03

标签: java linux posix

在Linux(Ubuntu / x64)上,我已验证最大SO_RCVBUF

~$ cat /proc/sys/net/core/rmem_max
212992

但是,当我在默认套接字以下运行代码时,接收大小为530904

SocketChannel ss = SocketChannel.open(new InetSocketAddress("localhost", 9876));
ss.configureBlocking(false);
//ss.socket().setReceiveBufferSize(10*1024*1024);
System.out.println("Receive size:"+ ss.socket().getReceiveBufferSize());

奇怪的是,如果我取消注释输出上方的setReceiveBufferSize行,则更改为

Receive size:212992

即JVM默认接收大小大于系统最大值,但不允许我将大小设置为大于最大值。

有人知道这是怎么回事吗?

0 个答案:

没有答案