Programas de vazamento de memória
Um vazamento de memória é um erro de programa que consiste em alocar repetidamente a memória, usando-a e, em seguida, negligenciando para liberá-la.
Um vazamento de memória em um programa de longa duração, como um aplicativo interativo, é um problema grave, pois pode resultar em fragmentação de memória e no acúmulo de grandes números de páginas de maioria de garbagas em memória real e espaço de página. Os sistemas têm sido conhecidos por ficar sem espaço de página por causa de um vazamento de memória em um único programa.
Um vazamento de memória pode ser detectado com o comando svmon , procurando por processos cujo segmento de trabalho cresce continuamente. Um vazamento em um segmento de kernel pode ser causado por um vazamento de mbuf ou por um driver de dispositivo, extensão do kernel ou até mesmo o kernel. Para determinar se um segmento está crescendo, use o comando svmon com a opção -i para olhar um processo ou um grupo de processos e ver se algum segmento continua a crescer.
Identificar a subroutina ofensivo ou linha de código é mais difícil, especialmente em aplicativos AIXwindows, que geram grandes números de chamadas malloc () e free () . C++ fornece um Depurador do HeapView para analisar / ajustar o uso de memória e fugas. Alguns programas de terceiros existem para análise de vazamentos de memória, mas eles requerem acesso ao código-fonte do programa.
Alguns usos da subroutine realloc () , enquanto não realmente erros de programação, podem ter o mesmo efeito que um vazamento de memória. Se um programa frequentemente usa a subroutine realloc () para aumentar o tamanho de uma área de dados, o segmento de trabalho do processo pode se tornar cada vez mais fragmentado se o armazenamento liberado pela subroutine realloc () não puder ser reutilizado para qualquer outra coisa.
# svmon -P 13548 -i 1 3
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage
13548 pacman 8535 2178 847 8533 N N N
Vsid Esid Type Description LPage Inuse Pin Pgsp Virtual
0 0 work kernel seg - 4375 2176 847 4375
48412 2 work process private - 2357 2 0 2357
6c01b d work shared library text - 1790 0 0 1790
4c413 f work shared library data - 11 0 0 11
3040c 1 pers code,/dev/prodlv:4097 - 2 0 - -
ginger :svmon -P 13548 -i 1 3
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage
13548 pacman 8589 2178 847 8587 N N N
Vsid Esid Type Description LPage Inuse Pin Pgsp Virtual
0 0 work kernel seg - 4375 2176 847 4375
48412 2 work process private - 2411 2 0 2411
6c01b d work shared library text - 1790 0 0 1790
4c413 f work shared library data - 11 0 0 11
3040c 1 pers code,/dev/prodlv:4097 - 2 0 - -
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage
13548 pacman 8599 2178 847 8597 N N N
Vsid Esid Type Description LPage Inuse Pin Pgsp Virtual
0 0 work kernel seg - 4375 2176 847 4375
48412 2 work process private - 2421 2 0 2421
6c01b d work shared library text - 1790 0 0 1790
4c413 f work shared library data - 11 0 0 11
3040c 1 pers code,/dev/prodlv:4097 - 2 0 - -