[Haskell-cafe] possible memory leak in uvector

Manlio Perillo manlio_perillo at libero.it
Mon Mar 2 20:12:44 EST 2009


In the "help optimizing memory usage for a program" I discovered some 
interesting things:

1) Using lazy ByteStrings to read files it not a good choice, since the
    garbage collector is not able to proper garbage cleanup.

    Running with -F1 RTS flag, however, keeps memory usage down.

2) UArr from uvector leaks memory.
    I'm rather sure about this.

    In fact the memory usage of my program is 815 MB, when:
    - I use lazy ByteString with -F1 flag
    - if I use strict ByteString

Using UArray and strict ByteString, memory usage is 660 MB.

In total I have 17770 arrays, so there is a leak of about 9146 bytes per 

In another program, where I do a lot of array concatenations, memory 
leak is much more evident.
Even using -F1 flag, memory usage grows too much.

Is this a know bug?
How can I verify if it is really a memory leak bug?

pumpkin_ (on #haskell.it) suggested me to use a more recent version of 
uvector package, from

Using this version memory usage is, finally, 643 MB!
(and execution if a bit faster, too).

The other program, with a lot of array concatenations, still eats a lot 
of memory...

Thanks   Manlio Perillo

More information about the Haskell-Cafe mailing list