Hi! May be this is a bit ingeniuos, but have you tried to use some dispose() or using (...) to that object ?
Cheers -----Original Message----- From: xplicit Sent: 23 May 2012 06:13:15 GMT To: [email protected] Subject: [Mono-list] Async sockets and memory leaks in BeginSend I am developing server with mono using async socket model. Currently it's about 500 simultaneously working clients with 20-100 operations per seconds. The code should send messages accordingly theirs creation time, so I use such pattern: Send() { //Dequeue message from queue. Messages placed in the queue accordingly theirs creation time SendStateObject state=new SendStateObject(); state.buffer=Dequeue(); state.socket=client; //some checks in the code were removed, this function is called only when no other send callbacks were ran client.BeginSend(state.buffer, 0, state.buffer.Length, SocketFlags.None, new AsyncCallback(SendCallback), state); } private void SendCallback(IAsyncResult ar) { SendStateObject sendState = (SendStateObject)ar.AsyncState; Socket client = sendState.workSocket; try { client.EndSend(ar); } catch() /*Some exceptions handling */ {} finally { sendState.buffer=null; sendState.workSocket=null; } if (SomeItemsInQueue()) Send(); } And this code produces huge memory leaks under high load. Profiler says, that there are millions of AsyncCallback objects and System.Net.Sockets.SocketAsyncResult objects. I think, I could minimize number of AsyncCallback objects by creating it only one time in constructor and passing it to BeginSend (I'll check it later), but what to do with SocketAsyncResult (and byte buffers which it contains in)? I don't create this object, it's created inside of BeginSend and in most cases it is not claimed by garbage collector. Maybe I use wrong pattern and must remove calling Send() from the end line of callback, but I don't understand, why these objects could not be freed by GC... -- View this message in context: http://mono.1490590.n4.nabble.com/Async-sockets-and-memory-leaks-in-BeginSend-tp4648844.html Sent from the Mono - General mailing list archive at Nabble.com. _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
