You can let
Java to use more memory but it is not the ultimate solution,
you should first check and see whether you have some memory leak or something and then try to use more memory. for example -Xmx3584m let the JVM instance to give JVM more memory. To solve such problems you can use profilers like yourKit or JProfiler, etc.
For load balancing and clustering, take a look at
http://en.wikipedia.org/wiki/Load_balancing_(computing) and
http://en.wikipedia.org/wiki/Cluster_(computing)