We'd love to get images out of the heap entirely (thus avoiding larger heap sizes with associated GC overhead etc). However, we need the GC to be aware that there are native resources tied to a specific Object. Right now it is possible to OOM in Java, even though there is actually plenty of heap space. The reason is that images (for example) in AWT/Java2D are not GC'd as soon as they could be, but typically require a couple GC passes for them to eventually get collected. In image resource heavy apps this can lead to OOM because memory is gone before we get a chance to collect all the now unused resources.