3 research outputs found

    Comparing mark-and sweep and stop-and-copy garbage collection

    Full text link
    Stop-and-copy garbage collection has been preferred to mark-and-sweep collection in the last decade because its collec-tion time is proportional to the size of reachable data and not to the memory size. This paper compares the CPU overhead and the memory requirements of the two collec-tion algorithms extended with generations, and finds that mark-and-sweep collection requires at most a small amount of additional CPU overhead (3-690) but, requires an aver-age of 20 % (and up to 40%) less memory to achieve the same page fault rate. The comparison is based on results obtained using trace-driven simulation with large Common Lisp programs.

    Issues in the design and implementation of a real-time garbage collection architecture

    Get PDF
    This dissertation proposes a new garbage-collected memory module architecture for hard real-time systems. The memory module is designed for compatibility with standard workstation architectures, and cooperates with standard cache consistency protocols. Processes read and write garbage- collected memory in the same manner as standard memory, with identical performance under most conditions. Occasional contention between user processes and the garbage collector results in delays to the user process of at most six memory cycles. Thus the proposed architecture guarantees real-time performance at fine granularity. This dissertation investigates the viability of the proposed architecture in two senses. First, it demonstrates that a fundamental component of the architecture, the object space manager, can be produced at a reasonable cost. Second, this dissertation reports the results of experiments that measure the performance of the proposed architecture under real workloads. Results of these experiments show that the architecture currently performs more slowly than traditional schemes; but this appears to be correctable by employing a more efficient function call mechanism that caches heap- allocated activation frames. Finally, this dissertation reports on some simple extensions to the C++ programming language to support slice objects. Slice objects, which are supported by the garbage collection architecture, are useful for implementing fragmentable arrays, i.e., arrays in which subarrays may be retained while unused elements become garbage and are collected. Experimental evidence demonstrates that slice objects can be used to implement strings more efficiently than at least some popular class libraries
    corecore