¿Se puede reducir el conjunto de trabajo de una aplicación administrada descargando bibliotecas no administradas con AfxFreeLibrary?

StackOverflow https://stackoverflow.com/questions/213627

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo una aplicación de Windows administrada que carga un componente de C ++ administrado que utiliza AfxLoadLibrary para cargar un componente de terceros si está presente en la máquina cliente. Una vez detectado, estoy descargando el componente utilizando AfxFreeLibrary en un intento por reducir el conjunto de trabajo de la aplicación principal administrada.

La llamada a AfxFreeLibrary es exitosa (verificada usando Process Explorer), pero no se libera memoria. ¿Esto se debe a la naturaleza de una aplicación administrada, o existe una manera de liberar este espacio de proceso?

No estoy buscando formas alternativas de abordar este problema en general, ya que el código ya está en producción, más bien me gustaría saber si el enfoque de descarga vale la pena.

¿Fue útil?

Solución

Debería hacerlo, puedes probarlo escribiendo una aplicación nativa pura y viendo el conjunto de trabajo. Sin embargo, el conjunto de trabajo es el tamaño de la memoria requerida para ejecutar la aplicación, por lo tanto, si el código utilizado por el dll se puede intercambiar, entonces el conjunto de trabajo no se reducirá. Windows no lo cuenta como parte del conjunto de trabajo. .

Si la dll tiene una memoria privada asignada al proceso, que no puede intercambiarse, entonces sí cuenta y reducirá el conjunto de trabajo.

entonces la respuesta es que depende. No se garantiza que haga ninguna diferencia, y si no se usa la dll, entonces se habrá intercambiado y no será parte del conjunto de trabajo actual. Es mejor que no te molestes en descargarlo, a menos que quieras mantener las cosas ordenadas.

La única forma de reducir el conjunto de trabajo es hacer que su aplicación use menos memoria. Como es una aplicación .NET, es probable que no tenga mucho control sobre ella (ya que el GC tomará su propia decisión acerca de cuánta memoria está 'activa' y se necesita en el conjunto de trabajo)

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