JVM Memory Management and Java Performance Tunning