我编写了一个从客户端读取数据的服务器:
使用boost::array缓冲区
启动服务器后,系统监视器显示1MB的使用率。
1.) 只需执行async_read_some并执行handleRead,在其中再次调用asyncRead函数。
void asyncRead() {
m_socket->async_read_some(
boost::asio::buffer(m_readBuffer, READ_BLOCK_SIZE),
m_strand->wrap(boost::bind(&ConnectionHandler::handleRead,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred))
);
}
在 handleRead 方法中,我会验证是否存在任何错误,如果没有错误则直接发出另一个 asyncRead() 请求。
2.) 持续发送大小约为102字节的数据帧。
在测试10000个数据帧后,总发送大小=102*10000,总读取大小=102*10000。
但是,系统监视器中的内存使用量激增至7.8 Mb。
无法确定增加的原因。尝试了以下不同方面: 1.) 所建立连接数量-仅为1。 2.) 已验证连接关闭-是的。 3.) 停止了 ioServic 但仍然没有变化。
在第二次运行客户端时,我发现内存正在增加。可能是怎么回事?我使用的是 boost::array,它是一个堆栈变量,并且只是简单地读取。没有其他地方初始化缓冲区。