Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

367
Vistas
El uso de memoria del programa aumenta con el tiempo, pero las herramientas de pérdida de memoria no informan problemas

Estoy trabajando en una biblioteca bastante grande que asigna y libera memoria continuamente a medida que se ejecuta. Durante las últimas semanas he estado tratando de mantener estable el consumo de memoria, pero parece estar aumentando con el tiempo. El comportamiento que no puedo explicar es que el aumento no es lineal. Hay un nivel de memoria de "línea de base" en el que el proceso se mantiene durante un tiempo y luego salta a una nueva "línea de base". A medida que pasa el tiempo, el salto implica más y más memoria. Entonces, digamos que el uso de la memoria saltó de 512 kb a 1024 kb después de unas pocas horas de funcionamiento. Podría ir de 1024 a 2048 horas de la noche. Entonces podría saltar a 4096kb la próxima vez. Aquí hay un gráfico de cómo se ve el uso de la memoria:

gráfico de uso de la memoria

Lo tengo funcionando en Linux y Valgrind le da un certificado de buena salud, si es que esto es relevante. Estoy usando el código de Linux aquí para mostrar el consumo de memoria virtual de mi proceso:

 int getValue(){ //Note: this value is in KB! FILE* file = fopen("/proc/self/status", "r"); int result = -1; char line[128]; while (fgets(line, 128, file) != NULL){ if (strncmp(line, "VmSize:", 7) == 0){ result = parseLine(line); break; } } fclose(file); return result;
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo más probable es que sufras de fragmentación de la memoria .

Lo que sucede es que a medida que libera fragmentos de memoria, obtiene pequeños agujeros que es posible que no pueda usar la próxima vez que solicite memoria. A medida que continúa asignando y liberando en un patrón que crea pequeños agujeros inutilizables, la única solución es obtener más trozos de memoria del sistema.

Si tiene reglas bien definidas sobre cómo su programa usa la memoria para cosas específicas, es posible que desee considerar un grupo de memoria para ayudar a asignar y liberar memoria de acuerdo con los requisitos específicos de su programa, en lugar de los requisitos generales del estándar. biblioteca.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda