Bytecode-Level Analysis and Optimization of Java Classes

Nystrom, Nathaniel John


The Java virtual machine specification provides the interface between Java compilers and Java execution environments. Its standard class file format is a convenient target for optimization of Java applications, even in environments where source code for both libraries and application is unavailable. Java bytecode can be optimized independently of the source-language compiler and virtual machine implementation. To explore the potential of bytecode-to-bytecode optimization frameworks, we have built a Java class file optimization tool called BLOAT and measured its impact on the performance of several benchmark programs. Our results demonstrate significant improvement in the execution of Java classes optimized by BLOAT, especially on an interpreted virtual machine, but indicate that more aggressive optimizations, particularly those enabled by interprocedural analysis will provide more benefit. We also consider execution in more performance-conscious environments such as just-in-time and off-line compilation.

  author = {Nystrom, Nathaniel John},
  title = {Bytecode-Level Analysis and Optimization of Java Classes},
  school = {Purdue University},
  year = {1998},
  month = {August}