Results 1 -
6 of
6
The Measured Cost of Conservative Garbage Collection
- Software Practice and Experience
, 1993
"... this paper, I evaluate the costs of different dynamic storage management algorithms, including domain-specific allocators, widelyused general-purpose allocators, and a publicly available conservative garbage collection algorithm. Surprisingly, I find that programmer enhancements often have little ef ..."
Abstract
-
Cited by 76 (6 self)
- Add to MetaCart
this paper, I evaluate the costs of different dynamic storage management algorithms, including domain-specific allocators, widelyused general-purpose allocators, and a publicly available conservative garbage collection algorithm. Surprisingly, I find that programmer enhancements often have little effect on program performance. I also find that the true cost of conservative garbage collection is not the CPU overhead, but the memory system overhead of the algorithm. I conclude that conservative garbage collection is a promising alternative to explicit storage management and that the performance of conservative collection is likely to improve in the future. C programmers should now seriously consider using conservative garbage collection instead of explicitly calling free in programs they write
Concurrent garbage collection for C++
- IN ISMM ’04: PROCEEDINGS OF THE 4TH INTERNATIONAL SYMPOSIUM ON MEMORY MANAGEMENT
, 1990
"... Automatic storage management, or garbage collection, is a feature usually associated with languages oriented toward ‘‘symbolic processing,’’ such as Lisp or Prolog; it is seldom associated with ‘‘systems’’ languages, such as C and C++. This report surveys techniques for performing garbage collection ..."
Abstract
-
Cited by 54 (5 self)
- Add to MetaCart
Automatic storage management, or garbage collection, is a feature usually associated with languages oriented toward ‘‘symbolic processing,’’ such as Lisp or Prolog; it is seldom associated with ‘‘systems’’ languages, such as C and C++. This report surveys techniques for performing garbage collection for languages such as C and C++, and presents an implementation of a concurrent copying collector for C++. The report includes performance measurements on both a uniprocessor and a multiprocessor.
Concurrent, Atomic Garbage Collection
, 1991
"... We describe a concurrent, atomic garbage collection algorithm for transaction-based languages, a class of languages intended to support reliable distributed systems. A garbage collection algorithm for reliable distributed systems must be atomic: a crash during a garbage collection should result in n ..."
Abstract
-
Cited by 14 (0 self)
- Add to MetaCart
We describe a concurrent, atomic garbage collection algorithm for transaction-based languages, a class of languages intended to support reliable distributed systems. A garbage collection algorithm for reliable distributed systems must be atomic: a crash during a garbage collection should result in no loss of data. A concurrent collector allows programs to continue operating as their heaps are collected, minimizing delays imposed by collection. A concurrent collector can be used in reliable distributed systems that must service interactive requests. We introduce concurrency into an atomic collector by breaking collection into a series of garbage collection segments, which are similar to transactions, but satisfy weaker properties than are required by transaction semantics. These weaker properties allow better performance. Thus, our collection algorithm enhances the reliability of programs written in transaction-based languages, without necessarily imposing severe performance penalties. ...
Incremental Mature Garbage Collection
, 1993
"... Many programming languages provide automatic garbage collection to reduce the need for memory management related programming. However, traditional garbage collection techniques lead to long and unpredictable delays and are therefore not satisfactory in a number of settings, such as interactive syste ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
Many programming languages provide automatic garbage collection to reduce the need for memory management related programming. However, traditional garbage collection techniques lead to long and unpredictable delays and are therefore not satisfactory in a number of settings, such as interactive systems, where non-disruptive behavior is of paramount importance. Advanced techniques, such as generation-based collection, alleviate the problem somewhat by concentrating collection efforts on small but hopefully gainful areas of memory, the so-called young generations. This approach reduces the need for collecting the remaining large memory area, the old generation, but in no way obviates it. Traditionally, conventional techniques have been employed for old generation collection, leading to pauses which, although less frequent, are still highly disruptive. Recently, however, Hudson & Moss have introduced a new algorithm, the Train Algorithm, for performing efficient incremental collection of o...
Conservative Garbage Collection on Distributed Shared Memory Systems
- In 16th Int. Conf. on Distributed Computing Syst
, 1996
"... In this paper we present the design and implementation of a conservative garbage collection algorithm for distributed shared memory (DSM) applications that use weakly--typed languages like C or C++, and evaluate its performance. In the absence of language support to identify references, our algorith ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
In this paper we present the design and implementation of a conservative garbage collection algorithm for distributed shared memory (DSM) applications that use weakly--typed languages like C or C++, and evaluate its performance. In the absence of language support to identify references, our algorithm constructed a conservative approximation of the set of cross--node references based on local information only. It was also designed to tolerate memory inconsistency on DSM systems that use relaxed consistency protocols. These techniques enabled every node to perform garbage collections without communicating with others, effectively avoiding the high cost of cross--node communication in networks of workstations. We measured the performance of our garbage collector against explicit programmer management using three application programs. In two out of the three programs the performance of the GC version is within 15% of the explicit version. The results showed that the garbage collector has t...
Copying garbage collection in the presence of ambiguous references
, 1988
"... Garbage collection algorithms rely on invariants to permit the identification of pointers and to correctly locate accessible objects. These invariants translate into constraints on object layouts and programming conventions governing pointer use. There are recent variations of collectors in which th ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Garbage collection algorithms rely on invariants to permit the identification of pointers and to correctly locate accessible objects. These invariants translate into constraints on object layouts and programming conventions governing pointer use. There are recent variations of collectors in which the invariants are relaxed. Typically, rules governing pointer use are relaxed, and a ‘conservative ’ collection algorithm that treats all potential pointers as valid is used. Such pointers are ‘ambiguous ’ because integers and other data can masquerade as pointers. Ambiguous pointers cannot be modified and hence the objects they reference cannot be moved. Consequently, conservative collectors are based on mark-andsweep algorithms. Copying algorithms, while more efficient, have not been used because they move objects and adjust pointers. This paper describes a variation of a copying garbage collector that can be used in the presence of ambiguous references. The algorithm constrains the layout and placement of objects, but not the location of referencing pointers. It simply avoids copying objects that are referenced directly by ambiguous pointers, reclaiming their storage on a subsequent collection when they are no longer ambiguously referenced. An implementation written in the ANSI C programming language is given.

