|
From: | andelnyr |
Subject: | Script consumindo memória demais. |
Date: | 08 Dec 2014 09:50:39 -0800 |
Prezados
Para realizar testes no meu ambiente de trabalho, escrevi uma biblioteca de funções e quando preciso realizar tais testes, simplesmente carrego esta biblioteca com um source e mando brasa no meu serviço.
Ocorre que numa sexta-feira dessas, eu carreguei a biblioteca, executei uma função de teste dentro de um loop "while true do done" e deixei rodando o final de semana todo, sem querer - é claro.
Quando cheguei na segunda a máquina estava travada, só respondendo a um "dedoff" ( desligamento pelo longo pressionamento da tecla power).
Segue abaixo um pequeno script que causa o mesmo efeito:
cat teste_memoria.sh
#!/bin/bash
function ler_arquivo {
local endereco="$1"
grep "$endereco" arquivo.txt
}
echo "1 aaa" > arquivo.txt
echo "2 bbb" >> arquivo.txt
echo "3 ccc" >> arquivo.txt
echo "4 ddd" >> arquivo.txt
echo "5 eee" >> arquivo.txt
clear
for n in $(seq 1 100000); do
for i in 1 2 3 4 5; do
vetor=( $(ler_arquivo "$i") )
echo "$n ${vetor[1]}"
done
done
Se eu executo este script com "./teste_memoria.sh" a quantidade de memória alocada para a instância do bash não se altera, porém se eu fizer "source teste_memoria.sh" a quantidade de memória cresce a cada execução, não retornando aos patamares iniciais.
O que estou fazendo de errado? Há como evitar esse efeito?
[Prev in Thread] | Current Thread | [Next in Thread] |