event_sub = bufferevent_socket_new(base, sock_g, BEV_OPT_CLOSE_ON_FREE);
bufferevent_setcb(event_sub, readcb, NULL, errorcb, (void*)funcHandler);
bufferevent_enable(event_sub, EV_READ|EV_WRITE);
event_base_dispatch(base);
运行后,一直内存占用一直增长,搞不清什么原因
11 个解决方案
#1
参考系统自带相关源代码。
#2
看看响应函数里的内存分配情况
#3
响应函数里没有在堆内申请内存,所以不存在占用不释放的情况,我试过把响应函数的内容只加一句清空缓冲区的语句,还是存在内存一直增长的问题,所以不知道是不是我代码的问题
#4
系统自带源码一时研究不清,所以来问问各位
#5
我的是客户端程序,上述代码是在连接服务端之后想进行一个IO的回调,不知道是不是这种方式不对
#6
可能是什么循环里有问题
#7
这段程序就一个这个event_base_dispatch(base),而且如果不发生IO,内存不增加,发生IO后,内存占用就开始增长,所以我觉得可能是我的程序的问题,但是功能都实现了,就发生了这个问题一直解决不了啊
#8
哪位大神能指点一下啊。。。
#9
你一直往sock写,但对面不读,那么后续数据都被libevent缓存到buffer里了,当然会越来越多。
#10
我在回调函数中用了一个bufferevent_readln()函数,读的同时清空,还是会有这样的问题。我想知道我这么用,是不是有问题。
#11
解决了,原因是bufferevent_readln()后,没有对其进行释放
#1
参考系统自带相关源代码。
#2
看看响应函数里的内存分配情况
#3
响应函数里没有在堆内申请内存,所以不存在占用不释放的情况,我试过把响应函数的内容只加一句清空缓冲区的语句,还是存在内存一直增长的问题,所以不知道是不是我代码的问题
#4
系统自带源码一时研究不清,所以来问问各位
#5
我的是客户端程序,上述代码是在连接服务端之后想进行一个IO的回调,不知道是不是这种方式不对
#6
可能是什么循环里有问题
#7
这段程序就一个这个event_base_dispatch(base),而且如果不发生IO,内存不增加,发生IO后,内存占用就开始增长,所以我觉得可能是我的程序的问题,但是功能都实现了,就发生了这个问题一直解决不了啊
#8
哪位大神能指点一下啊。。。
#9
你一直往sock写,但对面不读,那么后续数据都被libevent缓存到buffer里了,当然会越来越多。
#10
我在回调函数中用了一个bufferevent_readln()函数,读的同时清空,还是会有这样的问题。我想知道我这么用,是不是有问题。
#11
解决了,原因是bufferevent_readln()后,没有对其进行释放