- Geralmente é bastante delimitado. Embora haja dois lugares (pelo menos), esses buffers podem existir:
- No kernel. Definitivamente limitado. FIFO é codificado Acredito que o TCP pode ser configurado em
/proc/sys/kernel/tcp_wmem
(e rmem) e (dentro dos limites de proc) comsetsockopt
SO_SNDBUF
/SO_RCVBUF
. Veja o tcp (7) manpage para detalhes. - no seu aplicativo. Se você não está chamando write, etc. diretamente, a biblioteca que você está usando pode ter seus próprios buffers. Estes podem ser infinitos.
- Ok. Na verdade, existe um terceiro lugar, na RAM do seu NIC. Não pode ser aumentado além de um certo limite (bastante pequeno) sem soldar, então eu estou ignorando isso. Ah, e há um buffer de anel de transmissão, para o seu NIC para DMA de. Mais uma vez, tamanho fixo (ethtool para sintonizar, se possível).
- No kernel. Definitivamente limitado. FIFO é codificado Acredito que o TCP pode ser configurado em
- Os do kernel são exibidos como memória do sistema. Os que estão no seu aplicativo serão exibidos como parte do tamanho virtual do seu aplicativo (e tamanho de residência, etc.)
-
netstat -t
mostrará o tamanho atual da fila de envio e recebimento para cada conexão TCP. Para os que estão em sua biblioteca, verifique sua documentação.
Lembre-se, a memória não é vazada se você eventualmente a liberar. Se você está sofrendo apenas com filas cada vez maiores no seu aplicativo, isso não é vazado. Mesmo se você estiver sofrendo de fragmentação de memória crescente.