
On 03.09.2010, at 14:38, Daniel Fischer wrote:
I can't reproduce that. For me, it leaks also with profiling.
Have you used optimizations? It disappears if I compile the program with -O2. Without profiling I get the following. Here the maximum residency is nearly 45MB. $ ghc --make Temp.hs -fforce-recomp [1 of 1] Compiling Main ( Temp.hs, Temp.o ) Linking Temp ... $ ./Temp +RTS -sstderr ./Temp +RTS -sstderr 5458199 647,520,792 bytes allocated in the heap 256,581,176 bytes copied during GC 44,934,408 bytes maximum residency (11 sample(s)) 1,363,496 bytes maximum slop 103 MB total memory in use (1 MB lost due to fragmentation) Generation 0: 1223 collections, 0 parallel, 0.83s, 0.85s elapsed Generation 1: 11 collections, 0 parallel, 0.49s, 0.62s elapsed INIT time 0.00s ( 0.00s elapsed) MUT time 0.63s ( 0.67s elapsed) GC time 1.32s ( 1.46s elapsed) EXIT time 0.00s ( 0.00s elapsed) Total time 1.96s ( 2.13s elapsed) %GC time 67.6% (68.5% elapsed) Alloc rate 1,022,883,082 bytes per MUT second Productivity 32.3% of total user, 29.6% of total elapsed With profiling it looks as follows. Here the maximum residency is less than 15KB. $ ghc --make Temp.hs -prof -auto-all -fforce-recomp [1 of 1] Compiling Main ( Temp.hs, Temp.o ) Linking Temp ... $ ./Temp +RTS -sstderr ./Temp +RTS -sstderr 5458199 1,051,844,836 bytes allocated in the heap 110,134,944 bytes copied during GC 14,216 bytes maximum residency (96 sample(s)) 37,068 bytes maximum slop 2 MB total memory in use (0 MB lost due to fragmentation) Generation 0: 1908 collections, 0 parallel, 0.57s, 0.59s elapsed Generation 1: 96 collections, 0 parallel, 0.02s, 0.02s elapsed INIT time 0.00s ( 0.00s elapsed) MUT time 1.46s ( 1.51s elapsed) GC time 0.60s ( 0.61s elapsed) RP time 0.00s ( 0.00s elapsed) PROF time 0.00s ( 0.00s elapsed) EXIT time 0.00s ( 0.00s elapsed) Total time 2.05s ( 2.12s elapsed) %GC time 29.0% (28.7% elapsed) Alloc rate 721,170,248 bytes per MUT second Productivity 71.0% of total user, 68.9% of total elapsed