Reengineering Standard Java Runtime Systems through Dynamic Bytecode Instrumentation

Saved in:
Bibliographic Details
Title: Reengineering Standard Java Runtime Systems through Dynamic Bytecode Instrumentation
Authors: Binder, Walter, Hulaas, Jarle, Moret, Philippe
Publication Year: 2007
Collection: Ecole Polytechnique Fédérale Lausanne (EPFL): Infoscience
Subject Terms: Java, JVM, dynamic bytecode instrumentation, program transformations, dynamic metrics, profiling, aspect-oriented programming
Description: Java bytecode instrumentation is a widely used technique, especially for profiling purposes. In order to ensure the instrumentation of all classes in the system, including dynamically generated or downloaded code, instrumentation has to be performed at runtime. The standard JDK offers some mechanisms for dynamic instrumentation, which however either require the use of native code or impose severe restrictions on the instrumentation of certain core classes of the JDK. These limitations prevent several instrumentation techniques that are important for efficient, calling context-sensitive profiling. In this paper we present a generic bytecode instrumentation framework that goes beyond these restrictions and enables the customized, dynamic instrumentation of all classes in pure Java. Our framework addresses important issues, such as bootstrapping an instrumented JDK, as well as avoiding measurement perturbations due to dynamic instrumentation or execution of instrumentation code. We validated and evaluated our framework using an instrumentation for exact profiling which generates complete calling context trees of various platform-independent dynamic metrics. ; LGL
Document Type: conference object
Language: unknown
Relation: SCAM 2007 (Seventh IEEE International Working Conference on Source Code Analysis and Manipulation); https://infoscience.epfl.ch/handle/20.500.14299/9497
DOI: 10.1109/SCAM.2007.20
Availability: https://doi.org/10.1109/SCAM.2007.20
https://infoscience.epfl.ch/handle/20.500.14299/9497
https://hdl.handle.net/20.500.14299/9497
Accession Number: edsbas.528720D
Database: BASE
Description
Abstract:Java bytecode instrumentation is a widely used technique, especially for profiling purposes. In order to ensure the instrumentation of all classes in the system, including dynamically generated or downloaded code, instrumentation has to be performed at runtime. The standard JDK offers some mechanisms for dynamic instrumentation, which however either require the use of native code or impose severe restrictions on the instrumentation of certain core classes of the JDK. These limitations prevent several instrumentation techniques that are important for efficient, calling context-sensitive profiling. In this paper we present a generic bytecode instrumentation framework that goes beyond these restrictions and enables the customized, dynamic instrumentation of all classes in pure Java. Our framework addresses important issues, such as bootstrapping an instrumented JDK, as well as avoiding measurement perturbations due to dynamic instrumentation or execution of instrumentation code. We validated and evaluated our framework using an instrumentation for exact profiling which generates complete calling context trees of various platform-independent dynamic metrics. ; LGL
DOI:10.1109/SCAM.2007.20