cJVM is a Java Virtual Machine (JVM) which provides a single system image of a traditional JVM while executing in a distributed fashion on the nodes of a cluster. cJVM virtualizes the cluster, transparently distributing the objects and threads of any pure Java application. The aim of cJVM is to obtain improved scalability for Java Server Applications by distributing the application's work among the cluster's computing resources. cJVM's architecture, its unique object model, thread and memory models were described in [2]. In this article we focus on the optimization techniques employed in cJVM to achieve high scalability. In particular we focus on the techniques used to enhance locality thereby reducing the amount of communic...