| http://www.spinellis.gr/pubs/conf/2006-05-SANE-JTune/html/JTune.html This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference: 
 | 
 
| Bench. | Sun JVM | IBM JVM | 
| 1 | -server | - | 
| 2 | -server -Xms256M -Xmx4000M | -Xms256M -Xmx4000M | 
| 3 | -XX:+UseParallelGC | -Xgcpolicy:optthruput | 
| 4 | -XX:+UseParallelOldGC | - | 
| 5 | -XX:+UseParallelOldGC -XX:+UseTLE | -Xgcpolicy:optthruput -Xnocompactgc | 
| 6 | -XX:+UseConcMarkSweepGC | -Xgcpolicy:optavgpause | 
| 7 | -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode | - | 
| 8 | -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing | -Xgcpolicy:gencon | 
| Application | Version | 
| Linux Kernel | 2.6.11.4-21.10-smp | 
| Sun JDK | 1.5.0_03-b07 | 
| IBM JDK | IBM J9 VM (j9vmxa6423-20051103) | 
| JoNAS | 4.7.1 | 
| MySQL | 4.1.10a | 
| RUBiS | 1.4.3 | 
|   |   | 
 
| Configuration | Sun JVM | IBM JVM | ||||||
| TPS | Avg. Resp. Time (msec) | Err. Rate | Total GC Time (sec) | TPS | Avg. Resp. Time (msec) | Err. Rate | Total GC Time (sec) | |
| default | 72 | 934 | 0,013% | 573 | 31 | 10097 | 0,028% | 292 | 
| throughput | 60 | 2196 | 0,0033% | 1068 | 43 | 5582 | 0,014% | 379 | 
| concurrent | 26 | 12451 | 0,027% | 1166 | 31 | 9859 | 0,021% | 406 | 
|   |   | 
|   |   | 
|   |   | 
| Observation | Problem | Action | 
| Many spikes in total collection times | Too much time spent in full heap collections or memory compaction | Use a parallel collector, turn off heap compaction (dangerous) | 
| Too frequent full heap collections | Heap size is small | Increase heap size or use an incremental collector to avoid large pauses | 
| Too many garbage collected in each collection round | High allocation rate or too frequent full heap collections | Increase heap size, use parallel collector, use thread local heaps | 
| Large differences between committed and used heap | Heap size is too big | Decrease heap size, allow more space for young generations | 
| Committed heap size is constantly increasing | Application is caching too many objects | Decrease object pool sizes, tune the application server to close open connections faster, use large object spaces |