Download:
by Jonas Maebe, Dries Buytaert, Lieven Eeckhout, Koen De Bosschere
http://buytaert.net/files/oopsla06-paper.pdf
Add To MetaCart
Abstract:
Understanding the behavior of applications running on high-level language virtual machines, as is the case in Java, is non-trivial because of the tight entanglement at the lowest execution level between the application and the virtual machine. This paper proposes Javana, a system for building Java program analysis tools. Javana provides an easy-to-use instrumentation infrastructure that allows for building customized profiling tools very quickly. Javana runs a dynamic binary instrumentation tool underneath the virtual machine. The virtual machine communicates with the instrumentation layer through an event handling mechanism for building a vertical map that links low-level native instruction pointers and memory addresses to high-level language concepts such as objects, methods, threads, lines of code, etc. The dynamic binary instrumentation tool then intercepts all memory accesses and instructions executed and provides the Javana end user with highlevel language information for all memory accesses and natively executed instructions. We demonstrate the power of Javana through a number of applications: memory address tracing, vertical cache simulation and object lifetime computation. For each of these applications, the instrumentation specification requires only a small number of lines of code. Developing similarly powerful profiling tools within a virtual machine (as done in current practice) is both time-consuming and error-prone; in addition, the accuracy of the obtained profiling results might be questionable as we show in this paper.
Citations
|
998
|
Aspect-Oriented Programming
– Kiczales, Lamping, et al.
- 1997
|
|
696
|
An Overview of AspectJ
– Kiczales, Hilsdale, et al.
- 2001
|
|
684
|
ATOM: A system for building customized program analysis tools
– Srivastava, Eustace
- 1994
|
|
235
|
The JalapeƱo virtual machine
– ALPERN, ATTANASIO, et al.
|
|
234
|
EEL: Machine-Independent Executable Editing
– Larus, Schnarr
- 1995
|
|
145
|
Pin: Building customized program analysis tools with dynamic instrumentation. InPLDI
– Luk, Cohn, et al.
- 2005
|
|
126
|
Valgrind: A program supervision framework
– Nethercote, Seward
|
|
59
|
Extending UML with Aspects: Aspect Support in the Design Phase
– Suzuki, Yamamoto
|
|
45
|
and T.Austin. The simplescalar tool set
– Burger
- 1999
|
|
42
|
Characterizing the memory behavior of Java workloads: a structured view and opportunities for optimizations
– Shuf, Serrano, et al.
- 2001
|
|
37
|
Dynamic Metrics for Java
– Dufour, Driesen, et al.
- 2003
|
|
32
|
AspectC++: An aspect-oriented extension to the C++ programming language
– Spinczyk, Gal, et al.
- 2002
|
|
30
|
Bosschere. DIOTA: Dynamic Instrumentation, Optimization and Transformation of Applications
– Maebe, Ronsse, et al.
- 2002
|
|
27
|
Vertical profiling: Understanding the behavior of object-oriented applications
– Hauswirth, Sweeney, et al.
- 2004
|
|
22
|
Using hardware performance monitors to understand the behavior of Java applications
– Sweeney, Hauswirth, et al.
- 2004
|
|
20
|
S.: Heap profiling for space-efficient java
– Shaham, Kolodner, et al.
- 2001
|
|
10
|
Bosschere. Method-level phase behavior in Java workloads
– Georges, Buytaert, et al.
- 2004
|
|
8
|
TinyC 2 : Towards Building a Dynamic Weaving Aspect Language for C
– Zhang, Jacobsen
- 2003
|
|
7
|
Automating vertical profiling
– Hauswirth, Diwan, et al.
- 2005
|
|
6
|
J: A tool for dynamic analysis of Java programs
– Dufour, Hendren, et al.
- 2003
|
|
6
|
Bosschere. Instrumenting self-modifying code
– Maebe, De
- 2003
|
|
5
|
A perturbation-free replay platform for cross-optimized multithreaded application
– Choi, Alpern, et al.
- 2001
|
|
4
|
Selective profiling of Java applications using dynamic bytecode instrumentation
– Dmitriev
- 2004
|
|
3
|
Bosschere. The design and implementation of FIT: a flexible instrumentation toolkit
– Bus, Chanet, et al.
- 2004
|
|
3
|
Languages for dynamic instrumentation
– Reiss, Renieris
- 2003
|
|
1
|
Java Performance Profiling using the VTune Performance Analyzer. Intel
– Donnell
- 2004
|