1,168 research outputs found
A Time- and Space-Efficient Garbage Compaction Algorithm
Given an area of storage containing scattered marked nodes, one may wish to rearrange them into a compact mass at one end of the area, meanwhile revising all pointers to marked nodes to show their new locations. An algorithm is here described which accomplishes this task in Iinear time relative to the size of the storage area, and in space of the order of one bit for each pointer. The algorithm operates by reversibly encoding the situation that a collection of locations point to a single location by a linear list, emanating from the pointed-to location, passing through the pointing locations, and terminating with the pointed-to location\u27s transplanted contents
Concurrent Compaction in JVM Garbage Collection
This paper provides a brief overview of both garbage collection (GC) of memory and parallel processing. We then cover how parallel processing applies to GC. Specifically, these concepts are focused within the context of the Java Virtual Machine (JVM). With that foundation, we look at various algorithms that perform compaction of fragmented memory during the GC process. These algorithms are designed to run concurrent to the application running. Such concurrently compacting GC behavior stems from a desire to reduce \stop-the-world pauses of an application
Automated Verification of Practical Garbage Collectors
Garbage collectors are notoriously hard to verify, due to their low-level
interaction with the underlying system and the general difficulty in reasoning
about reachability in graphs. Several papers have presented verified
collectors, but either the proofs were hand-written or the collectors were too
simplistic to use on practical applications. In this work, we present two
mechanically verified garbage collectors, both practical enough to use for
real-world C# benchmarks. The collectors and their associated allocators
consist of x86 assembly language instructions and macro instructions, annotated
with preconditions, postconditions, invariants, and assertions. We used the
Boogie verification generator and the Z3 automated theorem prover to verify
this assembly language code mechanically. We provide measurements comparing the
performance of the verified collector with that of the standard Bartok
collectors on off-the-shelf C# benchmarks, demonstrating their competitiveness
- …