TY - GEN
T1 - Live heap space analysis for languages with garbage collection
AU - Albert, Elvira
AU - Genaim, Samir
AU - Gómez-Zamalloa, Miguel
PY - 2009/11/30
Y1 - 2009/11/30
N2 - The peak heap consumption of a program is the maximum size of the live data on the heap during the execution of the program, i.e., the minimum amount of heap space needed to run the program without exhausting the memory. It is well-known that garbage collection (GC) makes the problem of predicting the memory required to run a program difficult. This paper presents, the best of our knowledge, the first live heap space analysis for garbage-collected languages which infers accurate upper bounds on the peak heap usage of a program's execution that are not restricted to any complexity class, i.e., we can infer exponential, logarithmic, polynomial, etc., bounds. Our analysis is developed for an (sequential) object-oriented bytecode language with a scoped-memory manager that reclaims unreachable memory when methods return. We also show how our analysis can accommodate other GC schemes which are closer to the ideal GC which collects objects as soon as they become unreachable. The practicality of our approach is experimentally evaluated on a prototype implementation.We demonstrate that it is fully automatic, reasonably accurate and efficient by inferring live heap space bounds for a standardized set of benchmarks, the JOlden suite.
AB - The peak heap consumption of a program is the maximum size of the live data on the heap during the execution of the program, i.e., the minimum amount of heap space needed to run the program without exhausting the memory. It is well-known that garbage collection (GC) makes the problem of predicting the memory required to run a program difficult. This paper presents, the best of our knowledge, the first live heap space analysis for garbage-collected languages which infers accurate upper bounds on the peak heap usage of a program's execution that are not restricted to any complexity class, i.e., we can infer exponential, logarithmic, polynomial, etc., bounds. Our analysis is developed for an (sequential) object-oriented bytecode language with a scoped-memory manager that reclaims unreachable memory when methods return. We also show how our analysis can accommodate other GC schemes which are closer to the ideal GC which collects objects as soon as they become unreachable. The practicality of our approach is experimentally evaluated on a prototype implementation.We demonstrate that it is fully automatic, reasonably accurate and efficient by inferring live heap space bounds for a standardized set of benchmarks, the JOlden suite.
KW - Java Bytecode
KW - Live Heap Space Analysis
KW - Low-level Languages
KW - Peak Memory Consumption
UR - https://www.scopus.com/pages/publications/70350701886
U2 - 10.1145/1542431.1542450
DO - 10.1145/1542431.1542450
M3 - Conference contribution
AN - SCOPUS:70350701886
SN - 9781605583471
T3 - International Symposium on Memory Management, ISMM
SP - 129
EP - 138
BT - ISMM'09 - Proceedings of the 2009 ACM SIGPLAN International Symposium on Memory Management
T2 - 2009 ACM SIGPLAN International Symposium on Memory Management, ISMM'09
Y2 - 19 June 2009 through 20 June 2009
ER -