Why does performGC fail to release all memory?
Given the program: import Language.Haskell.Exts.Annotated -- from haskell-src-exts import System.Mem import System.IO import Control.Exception main :: IO () main = do evaluate $ length $ show $ fromParseResult $ parseFileContents $ "data C = C {a :: F {- " ++ replicate 400000 'd' ++ " -} }" performGC performGC performGC Using GHC 7.0.3, when I run: $ ghc --make Temp.hs -rtsopts && Temp.exe +RTS -G1 -S Alloc Copied Live GC GC TOT TOT Page Flts bytes bytes bytes user elap user elap ... 29463264 64 8380480 0.00 0.00 0.64 0.85 0 0 (Gen: 0) 20 56 8380472 0.00 0.00 0.64 0.86 0 0 (Gen: 0) 0 56