Report ID
2003-14
Report Authors
Lingli Zhang and Chandra Krintz
Report Date
Abstract
Java virtual machines (JVMs) have become increasingly popular for theexecution of a wide range of applications on mobile and embedded devices.Most JVMs for such devices use interpretation forbytecode execution. However, JVMs that use dynamic compilationhave been shown to enable significant performance improvements.One disadvantage of using a compile-only approach in a resource-constrainedenvironment is that it uses more memory than interpretationto store compiled code for reuse.With this paper, we address this limitation witha novel framework for adaptive compiled code unloading that can be integratedinto any compilation-based JVM. In our framework, a centralunloader monitors system resources to adaptively determine theaggressiveness with which to apply unloading. The unloaderutilizes both offline and online profileinformation using various strategies tounload dead or infrequently usedcode. We evaluate our framework using a non-optimizingcompiler JVM configuration as well asa state-of-the-art adaptive optimization configuration (in which hot methodsare identified and incrementally optimized). We find that byusing adaptive code unloading, we reduce heap residency tosignificantly improve garbage collection performance.Our results indicate that,for the benchmarks studied, our system reduces programexecution time by 22.32% for the dynamic compiler JVMand 11.66% for the adaptively optimizing JVM, when memory isconstrained.
Document
2003-14.pdf386.77 KB