Tuning Java Virtual Machines (JVMs) refers primarily to garbage collection (GC) tuning and memory heap size.
With most JVMs, tuning heap size requires identifying how the application uses memory, changes parameters and re-profiles. As much as is realistically possible, the application should be running close to production loads.
This is particularly difficult to do, since some real-world loads just cannot be replicated in the lab. Most JVMs provide you with the ability to set initial and maximum heap size, though some also allow other parameters such as large pages. If the heap size is set too large, garbage collection pauses become too long; too small, and the application will produce an out-of-memory error and likely crash. Thus memory and GC tuning are closely related topics that impact application performance.
For more information about JVM performance tuning and garbage collection, read this white paper about the various tuning and collection strategies. Java developers can improve application performance, scalability and reliability by making more informed choices about performance tuning options.