Garbarge collection for Prolog based on WAM
Communications of the ACM
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
Efficient memory management in a merged heap/stack prolog machine
Proceedings of the 2nd ACM SIGPLAN international conference on Principles and practice of declarative programming
A time- and space-efficient garbage compaction algorithm
Communications of the ACM
A nonrecursive list compacting algorithm
Communications of the ACM
Understanding Memory Management in Prolog Systems
Proceedings of the 17th International Conference on Logic Programming
Dynamic Memory Management for Sequential Logic Programming Languages
IWMM '92 Proceedings of the International Workshop on Memory Management
Optimising Bytecode Emulation for Prolog
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
A Simple and Efficient Copying Garbage Collector for Prolog
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
A Novel Term Compression Scheme and Data Representation in the BinWAM
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
CP '99 Proceedings of the 5th International Conference on Principles and Practice of Constraint Programming
So Many WAM Variations, So Little Time
CL '00 Proceedings of the First International Conference on Computational Logic
Variable Shunting for the WAM
Incremental copying garbage collection for WAM-based Prolog systems
Theory and Practice of Logic Programming
Integrated symbol table, engine and heap memory management in multi-engine prolog
Proceedings of the international symposium on Memory management
Hi-index | 0.00 |
Garbage collection by copying is becoming more and more popular for Prolog. Copying requires a marking phase in order to be safe: safeness means that the to-space is guaranteed not to overflow. However, some systems use a copying garbage collector without marking prior to copying, and instead postpone the copying of potentially unsafe cells. Such systems only collect small portions of the heap and it is not clear whether postponing works while collecting the whole heap. Moreover, it is shown here that postponing does not solve the problem in a fundamental way. Since marking takes time, it is worth studying the tradeoffs involved. These observations have prompted the experimentation with a series of garbage collectors based on copying without marking and without postponing. In particular, variants were implemented that are named dangerous, optimistic and cautious copying which exhibit various degrees of unsafeness. Versions of each have been implemented based on recursive copying as in most implementations of copy term/2 and on the Cheney algorithm. Performance on benchmarks suggests that large performance gains can be obtained by skipping the marking phase, that dangerous copying is still relatively safe but can be costly, and that the additional effort of cautious copying over optimistic copying is not worth it. The optimistic collectors based on recursive copying perform best and slightly better than the ones based on Cheney. Cache performance measurements back up the benchmark results.