Improving locality of reference in a garbage-collecting memory management system
Communications of the ACM
Tenuring policies for generation-based storage reclamation
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
Garbarge collection for Prolog based on WAM
Communications of the ACM
Simple generational garbage collection and fast allocation
Software—Practice & Experience
Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
Reducing sweep time for a nearly empty heap
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Segment order preserving copying garbage collection for WAM based Prolog
SAC '96 Proceedings of the 1996 ACM symposium on Applied Computing
Garbage Collection of Linked Data Structures
ACM Computing Surveys (CSUR)
A real-time garbage collector based on the lifetimes of objects
Communications of the ACM
A time- and space-efficient garbage compaction algorithm
Communications of the ACM
A nonrecursive list compacting algorithm
Communications of the ACM
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
Uniprocessor Garbage Collection Techniques
IWMM '92 Proceedings of the International Workshop on Memory Management
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
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
High-level networking with mobile code and first order AND-continuations
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
Partial evaluation of pointcuts
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
Implementing a Prolog Runtime System in a language like Java, which provides its own automated memory management and safety features (like built-in index checking and array initialization) requires a consistent approach to memory management based on a simple ultimate goal: minimizing total memory management time (the sum of Java's own and ours). Based on our experience with Jinni 2002 - a Java based compiled Prolog system, we analyze the existing garbage collection algorithms and propose new optimizations. In particular, we aim to have a garbage collector with least extra helper memory space yet with reasonably fast speed. Efforts are made in reducing both time and space overhead for the mark-sweep-compact algorithm. We suggest an in-place compaction algorithm and provide its implementation. As the Prolog engine uses dynamic arrays for its stacks, the impact of Java's garbage collector on the system becomes a key factor. In this context, we measure and optimize the performance of the garbage collector with the overall memory management scheme in mind.