Complete and Platform-Independent Calling Context Profiling for the Java Virtual Machine

  • Authors:
  • Aibek Sarimbekov;Philippe Moret;Walter Binder;Andreas Sewe;Mira Mezini

  • Affiliations:
  • Faculty of Informatics, University of Lugano, Lugano, Switzerland;Faculty of Informatics, University of Lugano, Lugano, Switzerland;Faculty of Informatics, University of Lugano, Lugano, Switzerland;Software Technology Group, Technische Universität Darmstadt, Darmstadt, Germany;Software Technology Group, Technische Universität Darmstadt, Darmstadt, Germany

  • Venue:
  • Electronic Notes in Theoretical Computer Science (ENTCS)
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Calling context profiling collects statistics separately for each calling context. Complete calling context profiles that faithfully represent overall program execution are important for a sound analysis of program behavior, which in turn is important for program understanding, reverse engineering, and workload characterization. Many existing calling context profilers for Java rely on sampling or on incomplete instrumentation techniques, yielding incomplete profiles; others rely on Java Virtual Machine (JVM) modifications or work only with one specific JVM, thus compromising portability. In this paper we present a new calling context profiler for Java that reconciles completeness of the collected profiles and full compatibility with any standard JVM. In order to reduce measurement perturbation, our profiler collects platform-independent dynamic metrics, such as the number of method invocations and the number of executed bytecodes. In contrast to prevailing calling context profilers, our tool is able to distinguish between multiple call sites in a method and supports selective profiling of (the dynamic extent of) certain methods. We have evaluate the overhead introduced by our profiler with standard Java and Scala benchmarks on a range of different JVMs.