It won't happened at java, but for non-GC language like C++, crash at constructor will cause memory leak: http://blogs.asman-it.com.au/dasman/index.php/20060210/java-coders-have-it-easy-crashing-constructors Discussion of if there are way to recover OOME - http://dobbscodetalk.com/index.php?option=com_myblog&show=Should-Out-of-Memory-Default-to-Being-a-Non-Recoverable-Error-.html&Itemid=29 http://blog.maxindelicato.com/2009/01/alternative-memcache-usage-a-highly-scalable-highly-available-inmemory-shard-index.html Discussion about using memory as store - http://martinfowler.com/bliki/MemoryImage.html When using direct memory can be faster, when you have a large amounts of data and/or you have to perform some IO with that data. Tick data is a good example - http://vanillajava.blogspot.com.au/2012/11/when-using-direct-memory-can-be-faster.html http://www.memorymanagement.org/index.html