The maximum heap size allocation to any JVM is dependent on several parameters like:
1. Operating System
2. Processor Bit Size (16, 32, 64 etc)
3. Physical & Virtual Memory configured on the server.
4. Bit size of the JVM (32 bit JVM vs 64 bit JVM).
5. # of JVM processes running on the server.
Generally it is not advisable to throw large chunk of memory at the JVM as some folks try to solve software problems by throwing hardware at it.
I would suggest you start with a low number like 512m or 1024m and then try to increase in chunks of 1024M.
As a simple answer you can throw big number like 2g or 4b on 32 bit machines. JVM may reject the heap size giving some logical error.