GHC's documentation is well-written and fascinating, here's how the heap is laid out: https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects