Pregunta

Hay una manera de desencadenar una recolección de basura en un .NETA proceso de otro proceso o desde el interior de WinDBG?

Hay Administrado Depuración de los Asistentes de que la fuerza de una colección como usted se mueve a través de un nativo manejado límite, y AQTime parece haber un botón, que sugiere que hace esto, pero no puedo encontrar ninguna documentación sobre cómo hacerlo.

¿Fue útil?

Solución 3

Juan Cocktoastan la respuesta a la utilización de GC.Recopilamos cuando en Visual Studio es la mejor opción si no.

Todavía no puedo encontrar una alternativa para hacer realidad la colección bajo el WinDBG, pero dando un paso atrás al problema de la "cuánta memoria es recuperable?" (ver mi comentario a la respuesta de Juan) creo que hay una alternativa mediante el uso de un guión (PowerDBG?) búsqueda a través de alguna combinación de !DumpHeap y !GCRoot para encontrar un no-raíces de las manijas y el total de espacio utilizado (básicamente emular el algoritmo que la GC haría utilizando el depurador).Pero desde el pensamiento de este no he tenido uno de estos bichos así que no he probado a escribir el código para hacerlo.

Otros consejos

Bien...hay la ventana inmediato.Si usted tiene el lujo de atacar el proceso, supongo que podría manualmente GC.Recoger en la ventana inmediato.

Pregunta más importante:¿por qué quieres manualmente inducir la GC.Recoger?Es una mala costumbre, y indicativa de mucho mayor de problemas de diseño.

Respondió en otra pregunta :

Básicamente, el uso de PerfView:

PerfView.exe ForceGC [ProcessName | Process ID] /AcceptEULA

No está pensada para su uso en producción.

Si usted exponer una función/objeto a través de la interacción remota, de que se podía hacer con bastante facilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top