In this paper we present two dynamic compilation techniques that enable high performance execution while reducing the effect of this compilation overhead. We first evaluate the effectiveness of lazy compilation. In lazy compilation, individual methods are compiled on demand upon their first invocation. This is in contrast to Eager Compilation, in which all methods in a class are compiled when a new class is loaded. Next, we present profile-driven, background compilation, a technique that augments lazy compilation by using idle cycles in multiprocessor systems to overlap compilation with application execution.
Profile information is used to prioritize methods as candidates for background compilation.