Innescando un .NETTO di garbage collection esternamente
-
01-07-2019 - |
Domanda
C'è un modo per attivare una procedura di garbage collection in un .NET processo da un altro processo o dall'interno di WinDBG?
Ci sono Gestite Debug Assistenti che forza una collezione come ci si sposta attraverso un nativo/gestito confine, e AQTime sembra pulsante che suggerisce che fa questo, ma non riesco a trovare alcuna documentazione su come fare.
Soluzione 3
Giovanni Cocktoastan la risposta di uso GC.Raccogliere quando in Visual Studio è la migliore opzione se c'.
Non riesco ancora a trovare un'alternativa di fare la raccolta in WinDBG, ma facendo un passo indietro problema di "quantità di memoria è deducibile?" (vedi il mio commento a Giovanni di risposta) credo che ci sia un'alternativa utilizzando uno script (PowerDBG?) ricerca attraverso una combinazione di !DumpHeap e !GCRoot per trovare il non-radicata maniglie e totale lo spazio utilizzato (in pratica emulare l'algoritmo che il GC usando il debugger).Ma poiché il pensiero di questo non ho avuto uno di questi bug così ho provato a scrivere il codice per farlo.
Altri suggerimenti
Bene...c'è la finestra immediata.Se avete il lusso di connessione al processo, ho supposto che potesse manualmente GC.Raccogliere nella finestra immediata.
Domanda più grande:perchè vuoi manualmente indurre GC.Raccogliere?È una brutta abitudine, e indicativo di molto più grande di problemi di progettazione.
Risposto in un'altra domanda :
In sostanza, utilizzare PerfView:
PerfView.exe ForceGC [ProcessName | Process ID] /AcceptEULA
Non è inteso per l'uso in produzione.
Se si espone una funzione in oggetto di via remoting, che potrebbe essere fatto abbastanza facilmente.