最大文件句柄数对内存的消耗

本文探讨了在Erlang中sys_max_files参数对内存的影响。特别是在erlangbeam中,每个文件句柄大约消耗64字节内存,如果设置不当可能会导致大量内存被占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sys_max_files在erlang beam里面2处地方消耗内存:

1.
static struct driver_data {
int port_num, ofd, packet_bytes;
ErtsSysReportExit *report_exit;
int pid;
int alive;
int status;
} *driver_data; /* indexed by fd */

7 WORDS

driver_data = (struct driver_data *)erts_alloc(ERTS_ALC_T_DRV_TAB, max_files * sizeof(struct driver_data));

2.

static struct fd_data {
char pbuf[4]; /* hold partial packet bytes */
int psz; /* size of pbuf */
char *buf;
char *cpos;
int sz;
int remain; /* for input on fd */
} *fd_data; /* indexed by fd */

5 WORDS + 4

fd_data = (struct fd_data *)
erts_alloc(ERTS_ALC_T_FD_TAB, max_files * sizeof(struct fd_data));

1个file消耗的内存为 13WORDS 左右, 32位机器大概是64个字节,假如你不小心把 ulimit -n 10000000 也就是说100w个句柄, 那光这个就消耗64M 内存.所以没有必须的时候, 最大文件句柄数还是够用就行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值