Java server performance: a case study of building efficient, scalable Jvms

  • Authors:
  • R. Dimpsey;R. Arora;K. Kuiper

  • Affiliations:
  • IBM Network Computing Software Division, 11400 Burnet Road, Austin, Texas;IBM Network Computing Software Division, 11400 Burnet Road, Austin, Texas;IBM Network Computing Software Division, 11400 Burnet Road, Austin, Texas

  • Venue:
  • IBM Systems Journal
  • Year:
  • 2000

Quantified Score

Hi-index 0.00

Visualization

Abstract

The importance of the JavaTM platform has shifted from a client-centered paradigm to the server. In particular, the Java language has matured into a viable programming model for server applications. Correspondingly, the requirements on the Java virtual machine (Jvm) have shifted. This paper details the serverspecific performance enhancements made to the core Jvm and just-in-time (JIT) compiler, which have allowed the IBM Developer Kits that implement Java code for Intel processors to become industry performance leaders. The paper focuses on synchronization implementation and granularity improvements that have greatly increased the scalability of the Java language on multiprocessor machines. Focus is also given to memory management, specifically, object allocation, garbage collection, and heap management. Details of communication and connection scaling are also provided. Finally, server-specific enhancements to the JIT compiler are discussed. All component enhancements in the paper are explained, and their performance implications are quantified with results from representative multithreaded server workloads. The paper summarizes work from across IBM. The authors' specific contributions include the three-tier spin lock, the thread local heap and freelist merge, the dynamic heap growth algorithm, bitwise sweep, compaction avoidance, and the suite of network enhancements.