I recently had to run a jvm with large heap size, without getting into technical details we need the jvm to carry about 25G of cached memory that we load on stratup, so we want to start the jvm with 30G of minimum and maximum memory. we have a 64G 16DC machine running centos 5.5. the machine is running both our application on tomcat and a postgresql database.
what ever we did we couldn't start the jvm with more then 25G with -Xms25g -Xmx25g, apparently the jvm needs contiguous memory blocks, and even with 64G physical memory the OS can't find 30G of contiguous memory,although free -m shows that there are more then 45G available. we even tried starting the machine without postgresql on startup and then try to allocate the jvm heap but it didn't help, 25G is the maximum we could do. and we tried it with sum jvm, ibm and jrockit, they all behave the same way.