So how does it explain itself that the system is now not crashing once I increased the Heap Size?
Obviously, because at some point your app needs more memory than you expected for some reason.
There are a LOT of tools for looking at memory use.
You can use the java.lang.Runtime methods such as freeMemory() to log stuff for example.
I think recent threads in the forum have covered this topic, do some searches.
Bill