Object allocations and garbage collection can have a considerable impact on the performance of Java applications. Without monitoring tools, such performance problems are hard to track down, and if such tools are applied, they often cause a significant overhead and tend to distort the behavior of the monitored application. In this paper we present a new light-weight memory monitoring approach in which we trace allocations, deallocations and movements of objects using VM-specific knowledge. We strive for utmost compactness of the trace by using a binary format with optimized encodings for difierent cases of memory events and by omitting all information that can be reconstructed offine when the trace is processed. Our approach allows us to reconstruct the heap for any point in time and to do offine analyses both on the heap and on the trace. We evaluated our tracing technique with more than 30 benchmarks from the DaCapo 2009, the DaCapo Scala, the SPECjvm 2008, and the SPECjbb 2005 benchmark suites. The average run-time overhead is 4.68%, which seems to be fast enough for keeping tracing switched on even in production mode.
CITATION STYLE
Lengauer, P., Bitto, V., & Mössenböck, H. (2015). Accurate and efficient object tracing for java applications. In ICPE 2015 - Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering (pp. 51–62). Association for Computing Machinery, Inc. https://doi.org/10.1145/2668930.2688037
Mendeley helps you to discover research relevant for your work.