Precise Analysis of Memory Consumption using Program Logics

  • Authors:
  • Gilles Barthe;Mariela Pavlova;Gerardo Schneider

  • Affiliations:
  • INRIA Sophia-Antipolis, France;INRIA Sophia-Antipolis, France;University of Oslo, Norway

  • Venue:
  • SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
  • Year:
  • 2005

Quantified Score

Hi-index 0.01

Visualization

Abstract

Memory consumption policies provide ameans to control resource usage on constrained devices, and play an important role in ensuring the overall quality of software systems, and in particular resistance against resource exhaustion attacks. Such memory consumption policies have been previously enforced through static analysis, which yield automatic bounds at the cost of precision, or run-time analysis, which incur an overhead that is not acceptable for constrained devices. In this paper, we study the use of logical methods to specify and statically verify precisememory consumption policies for Java bytecode programs. First, we demonstrate how the Bytecode Specification Language (a variant of the Java Modelling Language tailored to bytecode) can be used to specify precise memory consumption policies for (sequential) Java applets, and how verification tools can be used to enforce such memory consumption policies. Second, we consider the issue of inferring some of the annotations required to express the memory consumption policy, and report on an inference algorithm. Our broad conclusion is that logical methods provide a suitable means to specify and verify expressive memory consumption policies, with an acceptable overhead.