1
Vote

Memory leak when debugging repeated evals?

description

When I debug the script below in Visual Studio 2008, devenv.exe starts to eat lots of memory (several megabytes per second). Also the ir.exe that runs the script under devenv.exe eats more and more memory (10-100 kB per second).
 
500000.times { eval "1" }
 
This script runs with practically constant memory usage when I don't debug it.
 
Digging more into detail, I extended the script to print the usage of managed memory after every 100 evals:
 
n = 0
2000.times do
eval "1" 
n += 1
if n % 100 == 0
    puts "#{n} evals, #{System::GC.get_total_memory( true ) / 1024} kB managed memory used"
    gets
end
end
 
Without debugger, the output looks like this:
 
100 evals, 1337 kB managed memory used
200 evals, 1355 kB managed memory used
300 evals, 1355 kB managed memory used
400 evals, 1355 kB managed memory used
500 evals, 1355 kB managed memory used
600 evals, 1355 kB managed memory used
700 evals, 1355 kB managed memory used
800 evals, 1355 kB managed memory used
900 evals, 1355 kB managed memory used
1000 evals, 1355 kB managed memory used
1100 evals, 1355 kB managed memory used
1200 evals, 1355 kB managed memory used
1300 evals, 1355 kB managed memory used
1400 evals, 1355 kB managed memory used
1500 evals, 1359 kB managed memory used
1600 evals, 1359 kB managed memory used
1700 evals, 1362 kB managed memory used
1800 evals, 1362 kB managed memory used
1900 evals, 1362 kB managed memory used
2000 evals, 1362 kB managed memory used
 
 
Debugged from Visual Studio 2008, the output looks like this:
 
100 evals, 1757 kB managed memory used
200 evals, 2222 kB managed memory used
300 evals, 2652 kB managed memory used
400 evals, 3080 kB managed memory used
500 evals, 3508 kB managed memory used
600 evals, 3938 kB managed memory used
700 evals, 4366 kB managed memory used
800 evals, 4794 kB managed memory used
900 evals, 5222 kB managed memory used
1000 evals, 5654 kB managed memory used
1100 evals, 6087 kB managed memory used
1200 evals, 6516 kB managed memory used
1300 evals, 6945 kB managed memory used
1400 evals, 7374 kB managed memory used
1500 evals, 7806 kB managed memory used
1600 evals, 8235 kB managed memory used
1700 evals, 8667 kB managed memory used
1800 evals, 9096 kB managed memory used
1900 evals, 9525 kB managed memory used
2000 evals, 9958 kB managed memory used
 
Interestingly, during debugging, devenv.exe started to eat memory only after about 1000 evals. Before that devenv.exe used almost constant memory. After 1000 evals, each successive 100 evals ate around 20 MB more memory in devenv.exe, and this increment seemed to grow, being about 26 MB between 1900 and 2000 evals.

comments