Garbage collection in an uncooperative environment
Software—Practice & Experience
Better static memory management: improving region-based analysis of higher-order languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
From region inference to von Neumann machines via region representation inference
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Region-based memory management
Information and Computation
A region-based memory manager for prolog
Proceedings of the 2nd international symposium on Memory management
Accurate garbage collection in an uncooperative environment
Proceedings of the 3rd international symposium on Memory management
On Enabling the WAM with Region Support
ICLP '02 Proceedings of the 18th International Conference on Logic Programming
A direct approach to control-flow sensitive region-based memory management
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
A Retrospective on Region-Based Memory Management
Higher-Order and Symbolic Computation
Region analysis and transformation for Java programs
Proceedings of the 4th international symposium on Memory management
Static region analysis for mercury
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Path-sensitive region analysis for mercury programs
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Towards region-based memory management for Go
Proceedings of the 2012 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness
Hi-index | 0.00 |
Applying region-based memory management (RBMM) to logic programming languages poses a special challenge: backtracking can require regions removed during forward execution to be "resurrected", and any memory allocated during a computation that has been backtracked over must be recovered promptly, without waiting for the regions involved to come to the end of their life. In this paper, we describe how we implemented runtime support for RBMM in the logic programming language Mercury, whose specialized implementation of the language constructs involved in backtracking required equally specialized support. Our benchmark Mercury programs run about 25% faster on average with RBMM than with the usual Boehm garbage collector, and for some programs, RBMM achieves optimal memory consumption.