Chapter

Static Analysis

Volume 3672 of the series Lecture Notes in Computer Science pp 70-86

Memory Usage Verification for OO Programs

  • Wei-Ngan ChinAffiliated withComputer Science Programme, Singapore-MIT AllianceDepartment of Computer Science, National University of Singapore
  • , Huu Hai NguyenAffiliated withComputer Science Programme, Singapore-MIT Alliance
  • , Shengchao QinAffiliated withDepartment of Computer Science, University of Durham
  • , Martin RinardAffiliated withLaboratory for Computer Science, Massachusetts Institute of Technology

* Final gross prices may vary according to local VAT.

Get Access

Abstract

We present a new type system for an object-oriented (OO) language that characterizes the sizes of data structures and the amount of heap memory required to successfully execute methods that operate on these data structures. Key components of this type system include type assertions that use symbolic Presburger arithmetic expressions to capture data structure sizes, the effect of methods on the data structures that they manipulate, and the amount of memory that methods allocate and deallocate. For each method, we conservatively capture the amount of memory required to execute the method as a function of the sizes of the method’s inputs. The safety guarantee is that the method will never attempt to use more memory than its type expressions specify. We have implemented a type checker to verify memory usages of OO programs. Our experience is that the type system can precisely and effectively capture memory bounds for a wide range of programs.