Utilizziamo API gestita da EWS che esegue il polling di MS Exchange per i nuovi messaggi di posta dopo un determinato intervallo. Ad ogni chiamata del sondaggio (PullSubscription.GetEvents()
) - L'API Microsofts non riesce a disporre correttamente dello NetworkStream
e fa aumentare proporzionalmente la memoria. Questo era precedentemente discussed here, ma mai risolto. Usando ANTS Profiler siamo stati in grado di determinare quali oggetti erano in continua crescita in memoria e isolare il problema.Come forzare la garbage collection di oggetti non è possibile effettuare il dereferenziamento?
Ora che il problema è stato isolato, esiste un modo per disporre di un NetworkStream creato in un'API esterna a cui non si fa riferimento? GC.Collect() non sembra disporlo poiché ha ancora un riferimento attivo. Cosa possiamo fare per ripulire il riferimento ciondolante? C'è un wrapper che possiamo usare per forzare la pulizia del loro SDK bacato?
Mi chiedo: riesci a ottenere il riferimento tramite riflessione? –
Puoi postare dove hai trovato il NetworkStream orfano nella libreria? Ho solo cercato il metodo GetEventsMethod, ma non ho trovato un NetworkStream. –
@HenningKrause Ho anche provato l'approccio di Daren Thomas, ma riflettere implicherebbe un'indagine più approfondita sui componenti interni della classe ExchangeService e SubscriptionBase che ho scelto di saltare. Al momento ho seguito il numero 1 di Salvatore per ora e ho aperto un ticket con MS. Vedremo cosa succederà dopo ... – SliverNinja