c# - Microsoft UCMA: Strings Not Being Garbage Collected -
i running memory profiler on ucma application works client adds recorder participants session , notice lot of string instances eating memory (even when participants removed , after time of inactivity notice these strings don't garbage collected):
microsoft.rtc.collaboration!microsoft.rtc.signaling.diagnosticsinformation..ctor( int,diagnosticvisibility ) microsoft.rtc.collaboration!microsoft.rtc.signaling.diagnosticsinformation.createoutgoingdiagnosticsinformation( uint ) microsoft.rtc.collaboration!microsoft.rtc.collaboration.call.signalingsession_statechanged( object,signalingstatechangedeventargs ) microsoft.rtc.collaboration!microsoft.rtc.signaling.eventworkitem<teventargs>.process() microsoft.rtc.collaboration!microsoft.rtc.signaling.workitemqueue.processitems() microsoft.rtc.collaboration!microsoft.rtc.signaling.serializationqueue<t>.resumeprocessing() microsoft.rtc.collaboration!microsoft.rtc.signaling.serializationqueue<t>.resumeprocessingcallback( object ) microsoft.rtc.collaboration!microsoft.rtc.signaling.queueworkitemstate.executewrappedmethod( waitcallback,object ) mscorlib!system.threading.executioncontext.run( executioncontext,contextcallback,object ) mscorlib!system.threading._threadpoolwaitcallback.performwaitcallbackinternal( _threadpoolwaitcallback ) mscorlib!system.threading._threadpoolwaitcallback.performwaitcallback( object ) i see 2000 instances , they're not being cleaned up. has seen before , knows cause or if ucma issue in framework itself?
edit: see lot of deserialization on framework (xml deserializer object not being cleaned up?)
system.xml!system.xml.serialization.xmlserializer.deserialize( xmlreader,string,xmldeserializationevents ) system.xml!system.xml.serialization.xmlserializer.deserialize( xmlreader,string ) microsoft.rtc.collaboration!microsoft.rtc.signaling.xmlhelper.deserializeobjectfragment( byte[],xmlserializer ) microsoft.rtc.collaboration!microsoft.rtc.collaboration.conferencing.conferencejoincommandresponse.tryprocessresponsecore( sipmessagedata,ref realtimeexception ) microsoft.rtc.collaboration!microsoft.rtc.collaboration.conferencing.establishfocussessionsasyncresult.participatecallback( iasyncresult ) microsoft.rtc.collaboration!microsoft.rtc.signaling.completioncallbackworkitem.microsoft.rtc.signaling.iworkitem.process() microsoft.rtc.collaboration!microsoft.rtc.signaling.workitemqueue.processitems() microsoft.rtc.collaboration!microsoft.rtc.signaling.serializationqueue<t>.resumeprocessing() microsoft.rtc.collaboration!microsoft.rtc.signaling.serializationqueue<t>.resumeprocessingcallback( object ) microsoft.rtc.collaboration!microsoft.rtc.signaling.queueworkitemstate.executewrappedmethod( waitcallback,object ) mscorlib!system.threading.executioncontext.run( executioncontext,contextcallback,object ) mscorlib!system.threading._threadpoolwaitcallback.performwaitcallbackinternal( _threadpoolwaitcallback ) mscorlib!system.threading._threadpoolwaitcallback.performwaitcallback( object )
garbage collection not triggered some time of inactivity. there nothing wrong seeing lot of instances of string or other class in memory. , interned strings (compile time constants) never collected.
you don't have memory leak until out-of-memory exception.
Comments
Post a Comment