Cualquier pregunta de un PROFI a un SUPER PROFI - 1. - página 29

 
sergeev:

cuando se cierra un handle, ¿no se revierte la memoria (que se ha asignado por encima de la especificada en CreateFileMapping)?
Está liberado. Pero es al final. Necesitamos ahorrar memoria en tiempo de ejecución.
 
¿al final de qué? ¿al final del win dow o al cierre de un puñado o al cierre de una aplicación?
 
sergeev:
¿al final de qué? ¿al final del win dow o al cierre de un puñado o al cierre de una aplicación?
Cualquiera de ellos para elegir. Aun así, es el final.
 
ah, bueno, si está cerrando la cabecera, entonces no creo que haya ninguna fuga de memoria, es la forma normal que tiene Windows de liberar memoria cuando se borra una cabecera
 

De alguna manera es incorrecto liberar memoria mientras se ejecuta cerrando el descriptor.

La memoria debe ser liberada sin la esperanza de Windos.

 
:) ¿de qué otra forma se podría liberar? todo lo que has asignado, lo has borrado. MSDN para Mapping no dice nada sobre liberar manualmente la memoria antes de cerrar el manejador
 
sergeev:
:) ¿de qué otra forma se podría liberar? todo lo que has asignado, lo has borrado. MSDN para Mapping no dice nada sobre liberar manualmente la memoria antes de cerrar el manejador
Bueno, no me refiero a después de cerrar la manija. Al trabajar con la memoria necesitamos redimensionarla dinámicamente. Pero no hay que hacerlo siempre. La reasignación constante lleva tiempo.
 

Vadim, ¿qué estamos analizando exactamente?

He encontrado dos formas de ampliar la memoria. ¿Crees que habrá problemas de fugas de memoria en ambos casos?

 

Si todos los descriptores están cerrados, no hay fugas. Una fuga es cuando un programa se descarga pero deja recursos ocupados.

Pero puede haber problemas de consumo excesivo de memoria. Yo mismo tuve esos problemas no hace mucho tiempo. Conecté una clase equivocada para trabajar con series de tiempo. He añadido una clase que indexa los ticks por segundos. Comenzó a utilizar esta clase para trabajar con barras mensuales. Se comió toda la memoria en 30 segundos. Esta es una de las posibles variantes. Deberíamos vigilar este tipo de cosas y advertir sobre ellas.

El segundo caso es cuando el programa necesita mucha memoria, por ejemplo, 1000 Mb, pero no durante mucho tiempo. Si no lo libera, los otros programas tendrán 1000 MB menos hasta que su programa se descargue.

En definitiva, hay que llevar un control del consumo de recursos.

 
Vale. Lo tendré en cuenta.
Razón de la queja: