Consider the following scenario: A customer knows that a subset of the methods of an application are often used. With tiered compilation enabled, however, all methods (including methods that are a priori known to be executed often) go through three phases: Each method is first interpreted, then compiled to C1, and is then finally compiled to C2.
Compiling a subset of an application's methods using C1 right away could be beneficial, as C1 gathers the profiles necessary for C2 and is faster than the interpreter. This approach can improve application performance without increasing startup time too much.
This approach requires the capability of setting per-method compilation thresholds. Preferably, these method name/threshold pairs are read from a file.
Frequently executed methods are identified on sample run(s) of the VM. The set of frequently executed methods should be retrieved from the VM on the(se) sample run(s).