OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Dynamic Data Structure Analysis for Java Programs
ICPC '06 Proceedings of the 14th IEEE International Conference on Program Comprehension
A dynamic analysis for revealing object ownership and sharing
Proceedings of the 2006 international workshop on Dynamic systems analysis
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
The runtime structure of object ownership
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Modeling runtime behavior in framework-based applications
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
The causes of bloat, the limits of health
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Hi-index | 0.00 |
Applications often have large runtime memory requirements. In some cases, large memory footprint helps accomplish an important functional, performance, or engineering requirement. A large cache, for example, may ameliorate a pernicious performance problem. In general, however, finding a good balance between memory consumption and other requirements is quite challenging. To do so, the development team must distinguish effective from excessive use of memory: when is a data structure too big for its own good? We introduce health signatures to facilitate this balance. Using data from dozens of applications and benchmarks, we show that they provide concise and application-neutral summaries of footprint. We show how to use them to form value judgments about whether a design or implementation choice is good or bad. We demonstrate how to use health signatures to evaluate the asymptotic behavior of these choices, as input data size scales up. Finally, we show how being independent of any application eases comparison across disparate implementations.