A portable sampling-based profiler for Java virtual machines
John H. Whaley · 2000
This paper describes a portable and efficient sampling-based online measurement system for production-level Java virtual machines.This system is designed to provide continuous real time system performance measurements to a dynamic compiler, which can use these measurements to target frequently executed and time-consuming code for optimization and to make more informed optimization decisions.Because the system has very low overhead, it can be run continuously, providing a feedback mechanism to the dynamic compiler.This system utilizes a novel data structure, the partial calling context tree (PCCT), which allows the efficient encoding of approximate context-sensitive profile information.The PCCT is organized such that both incremental updates and extracting the important information are efficient operations.This online measurement system has been implemented in a cross-platform industry-leading Java Just-In-Time compiler.We present detailed performance results on a variety of platforms that show that the system is not only efficient enough to be used continuously in a production environment (2-4% slowdown for most applications) but is also surprisingly accurate in the data that it collects (typically >_90% accurate).