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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top