我正在编写一个Windows服务来处理来自客户端的请求。要监听请求,我在While循环中使用BeginAcceptTcpClient。
while (stopListenning == false)
{
tcpListener.BeginAcceptTcpClient(new AsyncCallback(RequestHandler), tcpListener);
}
我使用Windows任务管理器监视Windows服务的进程,并且在没有发送到Windows服务的请求时我检测到内存持续增加。我尝试了很多方法来解决这个问题,但没有结果。每个人都请帮助我。
答案 0 :(得分:0)
你有一个while循环通过new AsyncCallback(...)
每次循环执行时都会增加内存。如果tcpListener保持对每个AsyncCallback实例的引用,那么这些将不会被垃圾收集,并且您的内存使用将会增长和增长。如果没有维护引用,那么最终GC将启动并且您的内存使用将减少。
答案 1 :(得分:0)
在阅读本文http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx
后,我自己解决了这个问题问题是我没有使用ManualResetEvent,因为我对它有误解。现在一切都好。