Dynamic Code Repositioning for Java

Shinji TANAKA  Tetsuyasu YAMADA  Satoshi SHIRAISHI  

IEICE TRANSACTIONS on Information and Systems   Vol.E87-D   No.7   pp.1737-1742
Publication Date: 2004/07/01
Online ISSN: 
Print ISSN: 0916-8532
Type of Manuscript: Special Section PAPER (Special Section on Hardware/Software Support for High Performance Scientific and Engineering Computing)
Category: Software Support and Optimization Techniques
Java,  code repositioning,  dynamic compiler,  cache and TLB performance,  large-scale application,  

Full Text: PDF(289.1KB)>>
Buy this Article

The sizes of recent Java-based server-side applications, like J2EE containers, have been increasing continuously. Past techniques for improving the performance of Java applications have targeted relatively small applications. Moreover, when the methods of these small target applications are invoked, they are not usually distributed over the entire memory space. As a result, these techniques cannot be applied efficiently to improve the performance of current large applications. We propose a dynamic code repositioning approach to improve the hit rates of instruction caches and translation look-aside buffers. Profiles of method invocations are collected when the application performs with its heaviest processor load, and the code is repositioned based on these profiles. We also discuss a method-splitting technique to significantly reduce the sizes of methods. Our evaluation of a prototype implementing these techniques indicated 5% improvement in the throughput of the application.