Red de conocimiento informático - Aprendizaje de programación - Problema de uso de memoria de GC.Collect()

Problema de uso de memoria de GC.Collect()

Para un proyecto que requiere mucha administración de memoria, ¿por qué querrías hacerlo en .net?

¿Por qué no considerar el uso de C/C++?

Además, estás solicitando y liberando memoria con tanta frecuencia, ¿por qué no considerar reutilizar el mismo bloque de memoria?

//---------- Respuesta adicional-----------------

No lo hago Sepa que no está muy claro cuál es su aplicación, ni exactamente cómo funciona su programa.

1. ¿Qué posibilidades hay de uso simultáneo de memoria? Es decir, solicita una gran cantidad de memoria a la vez, ¿esto sucede cronológicamente o son posibles solicitudes simultáneas?

Si solo se usa un bloque de memoria grande al mismo tiempo, ¿por qué no solicita un bloque de memoria lo suficientemente grande para reutilizarlo?

Si se utilizan varios bloques de memoria grandes al mismo tiempo, ¿existe un límite superior determinado en el número de solicitudes simultáneas? Si es así, también puede considerar crear un grupo de bloques de memoria grande, por ejemplo, un bloque necesita hasta 100 M y la concurrencia es 10. En lugar de que el GC o el administrador de memoria de Windows soliciten y liberen memoria con frecuencia, puede diseñar un grupo de bloques de memoria que permita solicitar un bloque de memoria de 100 M un máximo de 10 veces.

2. Si el tamaño de la memoria varía mucho según la solicitud, entonces supongo que tendrás que agregar algunos algoritmos un poco más complejos para gestionar la solicitud y liberar los problemas. Existen algoritmos diseñados específicamente para administrar el uso de memoria de un programa y puede encontrar referencias en Internet.

3. Si tienes energía, también puedes estudiar cómo funciona GC, usar herramientas para ver el código fuente de su implementación y ver si se puede explotar.

//-------------, agregar de nuevo---------------------------------- ---- -

Incluso si el tamaño está determinado por datos de terceros, es posible que no sea ilimitado.

Después de todo, los recursos del sistema son limitados. Para hacer cosas ilimitadas con recursos limitados, definitivamente necesitas encontrar una manera.

1. ¿De dónde proceden estos datos? ¿Se envió por Internet?

2. Debido a que los datos que se procesan son demasiado grandes y la memoria no es lo suficientemente grande, no podemos limitar la expansión de la memoria. Entonces, ¿podemos considerar el uso de fragmentación?