Found a pretty interesting article explaing what causes out of memory exceptions to fire, how java heap space and native memory is used by an application.
http://www.ibm.com/developerworks/linux/library/j-nativememory-linux/index.html
http://www.ibm.com/developerworks/linux/library/j-nativememory-linux/index.html