ABSTRACT
Static memory management replaces runtime garbage collection with compile-time annotations that make all memory allocation and deallocation explicit in a program. We improve upon the Tofte/Talpin region-based scheme for compile-time memory management[TT94]. In the Tofte/Talpin approach, all values, including closures, are stored in regions. Region lifetimes coincide with lexical scope, thus forming a runtime stack of regions and eliminating the need for garbage collection. We relax the requirement that region lifetimes be lexical. Rather, regions are allocated late and deallocated as early as possible by explicit memory operations. The placement of allocation and deallocation annotations is determined by solving a system of constraints that expresses all possible annotations. Experiments show that our approach reduces memory requirements significantly, in some cases asymptotically.
- AFL95.Alexander Aiken, Manuel Fahndrich, and RaLph Levien. Better static memory management: Improvitng region-based analysis of higher-order languages. Technical Report CSD-95-866, UC Berkeley, April 1995. Google ScholarDigital Library
- App92.Andrew W. Appel. Compiling with Continuations. Cambridge University Press, 1992. Google ScholarDigital Library
- Deu90.Alain Deutsch. On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications. In Proc. of the 17th Annual A CM Symposium on Principles of Programming Languages, pages 157-168, January 1990. Google ScholarDigital Library
- DLM+78.Edsger W. Dijkstra, Leslie Lamport, A.J. Martin, C.S. Scholten, and E.F.M. Steffens. On-the-fly garbage collection: An exercise in cooperation. Communications of the A CM, 21 (11):966-975, November 1978. Google ScholarDigital Library
- Hen92.Fritz Henglein. Global tagging optimization by type inference. In Proc. of the 1992 A CM Conference on Lisp and Functional Programming, pages 205-215, July 1992. Google ScholarDigital Library
- HJ90.Geoff W. Hamilton and Simon B. Jones. Compiletime garbage collection by necessity analysis. In Proc. of the / 990 Glasgow Workshop on Functional Programming, pages 66-70, August 1990.Google Scholar
- MTH90.Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, 1990. Google ScholarDigital Library
- NO93.Scott Nettles and James O'Toole. Real-time replication garbage collection. In Proc. SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 217-226, June 1993. Google ScholarDigital Library
- PS92.Jens Palsberg and Michael i. Schwartzbach. Safety analysis versus type inference. Information Processing Letters, 43(4): 175-180, September 1992. Google ScholarDigital Library
- RM88.Cristina Ruggieri and Thomas P. Murtagh. Lifetime analysis of dynamically allocated objects. In Proc. of the 15th Annual A CM Symposium on Principles of Programming Languages, pages 285-293, January 1988. Google ScholarDigital Library
- Ses92.Peter Sestoft. Analysis and Efficient Implementation of Functional Programs. PhD dissertation, University of Copenhagen, Department of Computer Science, 1992.Google Scholar
- Shi88.Olin Shivers. Control flow analysis in Scheme. In Proc. SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 164-174, June 1988. Google ScholarDigital Library
- Tof94.Mads Tofte. Storage mode analysis. Personal communication, October 1994.Google Scholar
- TT93.Mads Tofte and Jean-Pierre Talpin. A theory of stack allocation in polymorphically typed languages. Technical Report 93/15, Department of Computer Science, University of Copenhagen, July 1993.Google Scholar
- TT94.Mads Tofte and Jean-Pierre Talpin. Implementation of the typed call-by-value X-calculus using a stack of regions. In Proc. of the 21st Annual A CM Symposium on Principles of Programming Languages, pages 188-201, January 1994. Google ScholarDigital Library
Index Terms
- Better static memory management: improving region-based analysis of higher-order languages
Recommendations
Better static memory management: improving region-based analysis of higher-order languages
Static memory management replaces runtime garbage collection with compile-time annotations that make all memory allocation and deallocation explicit in a program. We improve upon the Tofte/Talpin region-based scheme for compile-time memory management[...
Enabling Hybrid PCM Memory System with Inherent Memory Management
RACS '16: Proceedings of the International Conference on Research in Adaptive and Convergent SystemsReplacing the traditional volatile main memory, e.g., DRAM, with a non-volatile phase change memory (PCM) has become a possible solution to reduce the energy consumption of computing systems. To further reduce the bit cost of PCM, the development trend ...
Comments