В 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 превышает максимальный уровень системы, но он не позволяет мне установитьразмер выше макс.
Кто-нибудь знает, что здесь происходит?