On 16 December 2005 15:23, Joel Reymont wrote:
Looking at http://wagerlabs.com/randomplay.hd.ps I see closures (constructors?) in this order
<Script.Array.sat_s46N> W8# I# <Script.Array.fromIntegral_s453> <Script.Endian.sat_s1WxM>
<Script.Endian.sat_s1WF2> W16# <Script.PicklePlus.sat_s38YS> stg_ap_2_upd_info
Ok, so your heap is mainly full of (a) thunks generated by something in Script.Array, (b) Word8s, and (c) Ints.
This tells me it's something having to do with array code. I'm attaching the Script.Array module at the end. This report does not tell me who is retaining the data, though.
Looking at http://wagerlabs.com/randomplay.hy.ps I see types ordered like this
* Word8 Int ->* [] Char Word16 TableInfo
interesting... Word8 and Int correspond to the -hd output above, but '*' indicates that the type of the <Script.Array.sat_s46N> is polymorphic. Completely polymorphic closures like this are usually (error "something"), which is a silly thing to fill up your heap with :-) I'm a bit mystified though, because looking at the code for Script.Array, all your arrays are unboxed, so I don't know where all the Word8s and Ints are coming from. It might be useful to do "+RTS -hyWord8 -hc" to see who generated the Word8s. Oh, and it looks like you aren't doing -auto-all, that would probably be helpful. Cheers, Simon