Skip to main content

A Study of Memory Behavior of Java Workloads

  • Chapter
Java Microarchitectures

Abstract

This paper studies the memory behavior of important Java workloads used in benchmarking Java Virtual Machines (JVMs), based on instrumentation of both application and library code in a state-of-the-art JVM, and provides structured information about these workloads to help guide systems’ design. We begin by characterizing the inherent memory behavior of the benchmarks, such as information on the breakup of heap accesses among different categories and on the hotness of references to fields and methods. We then provide detailed information about misses in the data TLB and caches, including the distribution of misses over different kinds of accesses and over different methods. In the process, we make interesting discoveries about TLB behavior and limitations of data prefetching schemes discussed in the literature in dealing with pointerintensive Java codes. Throughout this paper, we develop a set of recommendations to computer architects and compiler writers on how to optimize computer systems and system software to run Java programs more efficiently. This paper also makes the first attempt to compare the characteristics of SPEC JVM98 to those of a server-oriented benchmark, pBOB, and explain why the current set of SPEC JVM98 benchmarks may not be adequate for a comprehensive and objective evaluation of JVMs and just-in-time (JIT) compilers.

We discover that the fraction of accesses to array elements is quite significant and demonstrate that the number of “hot spots” in the benchmarks is small. We also show that even a fairly large L2 data cache is not effective for many Java benchmarks. We observe that instructions used to prefetch data into the L2 data cache are often squashed because of high TLB miss rates and because the TLB does not usually have the translation information needed to prefetch the data into the L2 data cache. We also find that co-allocation of frequently used method tables can reduce the number of TLB misses and lower the cost of accessing type information block entries in virtual method calls and runtime type checking.

Work done at IBM T. J. Watson Research Center

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2002 Springer Science+Business Media New York

About this chapter

Cite this chapter

Shuf, Y., Serrano, M.J., Gupta, M., Singh, J.P. (2002). A Study of Memory Behavior of Java Workloads. In: Narayanan, V., Wolczko, M.I. (eds) Java Microarchitectures. The Springer International Series in Engineering and Computer Science, vol 679. Springer, Boston, MA. https://doi.org/10.1007/978-1-4615-0993-6_2

Download citation

  • DOI: https://doi.org/10.1007/978-1-4615-0993-6_2

  • Publisher Name: Springer, Boston, MA

  • Print ISBN: 978-1-4613-5341-6

  • Online ISBN: 978-1-4615-0993-6

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics