All
safe languages provide a mechanism for automatic memory management,
traditionally in the form of a garbage
collector. Static memory management and, more specifically,
region
inference are attempts to limit the run-time costs associated with
memory
management by performing one or more static analyses that
conservatively
approximate the behavior of an ordinary collector. During my
internship
at Microsoft Research, I contributed to the design and implementation
of a
region-based memory manager for C#, an object-oriented language.
In this
talk, I will review some initial as well as recent work in region
inference and
present a number of challenges specific to object-oriented
languages. I
will relate our approach as a synthesis of previous region-based memory
management systems and a set of imperative program analyses.
Principles
of Programming Seminars