Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

368
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda