Heap is part of RAM.But still there is a limit that we can not define heap size beyond some percentage of RAM.For example:- i have 32 bit winodws xp OS and 4 GB RAM. But i can not declare the heap size more than 1600 MB. My question here why we can not declare heap size to some large value say 3GB which is lower than my 4GB RAM(as in 32 Bit can ustilize up to 4gb of RAM)? This is true for single process.
I mean i can start two tomcat or any other java process allocating 1600MB heap size to each but i can not allocate 3200MB to single process.what is the reason that behind that?