Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

381
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!