Abstract
Java has become a popular programming language used on different platforms, ranging from embedded systems to powerful servers. Since the memory management is one of the most time-consuming parts within Java virtual machine (JVM), various techniques have been developed to boost its performance. However, the JVM memory management still does not scale very well, especially for multithreaded server applications. In this paper, we study different aspects of JVM object allocation from thread's perspective, using the trace data we collected from Sun JDK 1.3.1. Additionally, we construct a heap simulator to study the potential memory contentions among different threads. The simulation results show that dividing heap into different subheaps is very effective in alleviating the memory contentions. The results imply the potential benefits of using subheaps in improving the Java memory management performance.