Bibliography for Concurrent Remembered Set Refinement in Generational Garbage Collection

@Article{Ungar:1984:GSN,
  author =       "D. Ungar",
  title =        "Generation scavenging: a non-disruptive high
                 performance storage reclamation algorithm",
  journal =      "ACM SIG{\-}PLAN Notices",
  volume =       "19",
  number =       "5",
  pages =        "157--167",
  month =        may,
  year =         "1984",
  coden =        "SINODQ",
  ISSN =         "0362-1340",
  bibdate =      "Sat Apr 25 11:46:37 MDT 1998",
  acknowledgement = ack-nhfb,
  classification = "C6120 (File organisation)",
  conflocation = "Pittsburgh, PA, USA; 23-25 April 1984",
  conftitle =    "Proceedings of the ACM SIGSOFT/SIGPLAN Software
                 Engineering Symposium on Practical Software Development
                 Environments",
  corpsource =   "Dept. of Electrical Engng. and Computer Sci., Univ. of
                 California, Berkeley, CA, USA",
  keywords =     "automatic storage reclamation; Berkeley Smalltalk
                 Smalltalk; circular structures; generation scavenging;
                 interactive computing environments; storage management;
                 storage reclamation algorithms; virtual memory",
  sponsororg =   "ACM",
  treatment =    "T Theoretical or Mathematical",
}

@Article(Baker78,
    Author = "Baker, H. G.",
    Key = "Baker",
    Journal = "Communications of the ACM",
    Title = "List Processing in Real Time on a Serial Computer",
    Year = "1978",
    Month = "April",
    Volume = "21",
    Number = "4",
    Pages = "280-294"
    )

@InProceedings{huds90,
  author =       "Richard L. Hudson and Amer Diwan",
  title =        "Adaptive Garbage Collection for {M}odula-3 and
                 {S}malltalk",
  address =      "Ottawa",
  booktitle =    "{OOPSLA/ECOOP} '90 Workshop on Garbage Collection in
                 Object-Oriented Systems",
  editor =       "Eric Jul and Niels-Christian Juul",
  month =        oct,
  year =         "1990",
  url =          "ftp://ftp.cs.utexas.edu/pub/garbage/GC90/Hudson.ps.Z",
}

@Article{lieb83,
  author =       "Henry Lieberman and Carl E. Hewitt",
  title =        "A Real-Time Garbage Collector Based on the Lifetimes
                 of Objects",
  journal =      "Communications of the {ACM}",
  publisher =    "ACM Press",
  volume =       "26(6)",
  pages =        "419--429",
  year =         "1983",
  note =         "Also report TM--184, Laboratory for Computer Science,
                 MIT, Cambridge, MA, July 1980 and AI Lab Memo 569,
                 1981",
  abstract =     "The authors, motivated by the need for efficient
                 management of short-lived objects in object-oriented
                 systems for AI applications, propose a new garbage
                 collection algorithm. The algorithm which is proposed
                 has the objective of differentiating the special case
                 of garbage collection for objects with short lives.
                 Such differentiation, the paper argues, will also
                 improve the garbage collection for long-lived objects,
                 since less effort is made in considering these objects
                 for reclamation. The algorithm proposed is an extension
                 of a garbage collection algorithm proposed by Baker.
                 The most important feature of Baker's algorithm is that
                 elementary object creation and object access time take
                 a bounded amount of time regardless of the memory size.
                 It is a real-time algorithm. As an enhancement to
                 Baker's algorithm, the authors propose dividing the
                 address space into small regions, with each region
                 being composed of a set of pages. This division is
                 different from the Baker algorithm, which divides the
                 address space into two regions. The second enhancement
                 to Baker's algorithm uses the finer divisions of the
                 address space to vary the rate of garbage collection
                 for each region according to the age of the region. The
                 criteria for determining the rate are motivated by the
                 observation that newer regions contain a higher
                 percentage of garbage. The paper is excellently
                 constructed. It was, however, disappointing not to find
                 comparative measurements for performance, region
                 fragmentation, the impact of locality, the impact of
                 programming style, etc. Nevertheless, the paper is
                 recommended.",
}

@InProceedings{Moon:acm:lfp:1984,
  author =       "David A. Moon",
  title =        "Garbage Collection in a Large {Lisp} System",
  booktitle =    "Conference Record of the 1984 {ACM} Symposium on Lisp
                 and Functional Programming",
  publisher =    "ACM",
  month =        aug,
  year =         "1984",
  pages =        "235--246",
  refs =         "7",
  checked =      "19940322",
  source =       "dept. library",
  keywords =     "Lisp, garbage collection",
  abstract =     "This paper discusses garbage collection techniques
                 used in a high-performance Lisp implementation with a
                 large virtual memory, the Symbolics 3600. Particular
                 attention is paid to practical issues and experience.
                 In a large system problems of scale appear and the most
                 straightforward garbage-collection techniques do not
                 work well. Many of these problems involve the
                 interaction of the garbage collector with demand-paged
                 virtual memory. Some of the solutions adopted in the
                 3600 are presented, including incremental copying
                 garbage collection, approximately depth-first copying,
                 ephemeral objects, tagged architecture, and hardware
                 assists. We discuss techniques for improving the
                 efficiency of garbage collection by recognizing that
                 objects in the Lisp world have a variety of lifetimes.
                 The importance of designing the architecture and the
                 hardware to facilitate garbage collection is
                 stressed.",
  reffrom =      "Lang:Dupont:iait:1987",
  reffrom =      "Moon:ieee:c:1987",
  reffrom =      "Appel:spe:1989",
  reffrom =      "Johnson:acm:lfp:1990",
  reffrom =      "Zorn:acm:lfp:1990",
  reffrom =      "Baker:acm:lfp:1990",
  reffrom =      "Layer:Richardson:cacm:1991",
  reffrom =      "Allard:Hawkins:cacm:1991",
  reffrom =      "Wilson:Lam:Moher:acm:lfp:1992",
  reffrom =      "Jagannathan:Philbin:acm:lfp:1992",
}

@article{Ung84-sigplan,
   author = {D. M. Ungar},
   title = "Generation Scavenging: {A} Non-disruptive High Performance Storage Reclamation Algorithm",
   journal = {ACM SIGPLAN Notices},
   number = 5,
   volume = 19,
   pages = {157--167},
   month = apr,
   year = {1984}
}   

@inproceedings{Wil92-iwmm,
   author = {P. R. Wilson},
   title = "Uniprocessor Garbage Collection Techniques",
   booktitle = {International Workshop on Memory Management},
   address = {St. Malo, France},
   publisher = SV,
   series = {Lecture Notes in Computer Science},
   number = {637},
   pages = {1--42},
   month = sep,
   year = {1992}
}

@book{Jon96-gcbook,
   title = {{Garbage Collection: Algorithms for Automatic Dynamic Memory Management}},
   author = {Richard Jones and Rafael Lins},
   publisher = JWS,
   year = {1996}
}

@InProceedings{fitz00,
  author =       "Robert Fitzgerald and David Tarditi",
  title =        "The Case for Profile-Directed Selection of Garbage
                 Collectors",
  booktitle =    "Proceedings of the Second International Symposium on
                 Memory Management",
  editor =       "Tony Hosking",
  address =      "Minneapolis, MN",
  publisher =    "ACM Press",
  month =        oct,
  year =         "2000",
  ISBN =         "1-58113-263-8",
  abstract =     "Many garbage-collected systems use a single garbage
                 collection algorithm across all applications. It has
                 long been known that this can produce poor performance
                 on applications for which that collector is not well
                 suited. In some systems, such as those that execute
                 stand-alone compiled executables, an appropriate
                 collector for each application can be selected from a
                 pool of available collectors and tuned by using profile
                 information. In a study of 20 benchmarks and 6
                 collectors compiled with the Marmot optimizing
                 Java-to-native compiler, for every collector there was
                 at least one benchmark that would have been at least
                 15\% faster with a more appropriate collector. A
                 detailed analysis of storage management costs shows how
                 they vary by application and collector.",
}

@InProceedings{HoskingAnt1993a,
  author =       "Antony L. Hosking and Richard L. Hudson",
  booktitle =    "ACM OOPSLA'93 Workshop on Memory Management and
                 Garbage Collection",
  title =        "Remembered Sets can also Play Cards",
  year =         "1993",
  address =      "Washington, DC",
  url =          "ftp://ftp.cs.utexas.edu/pub/garbage/GC93/hosking.ps",
  keywords =     "write barrier, generational garbage collection",
  month =        oct,
  scope =        "gc",
}

@TechReport{Soba88,
  author =       "Patrick G. Sobalvarro",
  title =        "A Lifetime-Based Garbage Collector for {Lisp} Systems
                 on General-Purpose Computers",
  type =         "{B.S.} thesis",
  institution =  "Massachusetts Institute of Technology {EECS}
                 Department",
  address =      "Cambridge, Massachusetts",
  year =         "1988",
}

@inproceedings{HMS92-oopsla,
   author = {A. L. Hosking and J. E. B. Moss and D. Stefanovic},
   booktitle = {Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications},
   address = {Vancouver, Canada},
   pages = {92--109},
   title = "A Comparative Performance Evaluation of Write Barrier Implementations",
   month = oct,
   year = {1992}
}


@Article{Wilson:1989:CSC,
  author =       "Paul R. Wilson and Thomas G. Moher",
  title =        "A ``Card-Marking'' Scheme for Controlling
                 Intergenerational References in Generation-based
                 Garbage Collection on Stock Hardware",
  journal =      "ACM SIG{\-}PLAN Notices",
  volume =       "24",
  number =       "5",
  pages =        "87--92",
  month =        may,
  year =         "1989",
  coden =        "SINODQ",
  ISSN =         "0362-1340",
  bibdate =      "Fri Feb 14 18:46:32 MST 1997",
  abstract =     "Like D. Moon's Ephemeral Garbage Collector ours does
                 not actually record which individual locations hold
                 intergenerational pointers. Ours uses a software
                 analogue to pages, called cards. Since individual
                 locations are not remembered, whole cards must be
                 scanned at scavenge time to find pointers into younger
                 generations. This lowered-resolution recording has two
                 benefits, the space required for recording is greatly
                 reduced, and the base cost of examining this
                 information (at scavenge time) is similarly decreased.
                 To minimize the continual run-time overhead, we record
                 only whether a location is modified. These benefits may
                 be significant in large heaps, especially if locality
                 is poor or the page size is large.",
  acknowledgement = ack-nhfb,
  affiliationaddress = "Chicago, IL, USA",
  classification = "723",
  journalabr =   "SIGPLAN Not",
  keywords =     "Card Scanning; Computer Operating Systems--Storage
                 Allocation; Computer Programming languages--lisp;
                 Computer Software; Data Processing; Data Storage,
                 Digital--Virtual; Data Structures; Garbage Collection;
                 Intergenerational References; languages; Stock
                 Hardware",
  subject =      "D.4.2 Software, OPERATING SYSTEMS, Storage Management
                 \\ D.2.m Software, SOFTWARE ENGINEERING, Miscellaneous
                 \\ D.3.2 Software, PROGRAMMING LANGUAGES, Language
                 Classifications \\ D.3.3 Software, PROGRAMMING
                 LANGUAGES, Language Constructs",
}

@InProceedings{Boehm91a,
  author =       "Hans-J. Boehm and Alan J. Demers and Scott Shenker",
  title =        "Mostly Parallel Garbage Collection",
  pages =        "157--164",
  ISBN =         "0-89791-428-7",
  editor =       "Brent Hailpern",
  booktitle =    "Proceedings of the {ACM} {SIGPLAN} '91 Conference on
                 Programming Language Design and Implementation",
  address =      "Toronto, ON, Canada",
  month =        jun,
  year =         "1991",
  publisher =    "ACM Press",
}

@InProceedings{1990:popl:demers,
  author =       "Alan Demers and Mark Weiser and Barry Hayes and Hans
                 Boehm and Daniel Bobrow and Scott Shenker",
  title =        "Combining Generational and Conservative Garbage
                 Collection: Framework and Implementations",
  booktitle =    "Conference Record of the Seventeenth Annual {ACM}
                 Symposium on Principles of Programming
                 Languages",
  year =         "1990",
  organization = "ACM SIGACT and SIGPLAN",
  publisher =    "ACM Press",
  ISBN =         "0-89791-343-4",
  pages =        "261--269",
  genterms =     "DESIGN, LANGUAGES, THEORY",
  categories =   "D.3.4 Software, PROGRAMMING LANGUAGES, Processors.
                 D.1.0 Software, PROGRAMMING TECHNIQUES, General. D.4.2
                 Software, OPERATING SYSTEMS, Storage Management,
                 Allocation/deallocation strategies.",
  abstract =     "Two key ideas in garbage collection are generational
                 collection and conservative pointer-finding.
                 Generational collection and conservative
                 pointer-finding are hard to use together, because
                 generational collection is usually expressed in terms
                 of copying objects, while conservative pointer-finding
                 precludes copying. We present a new framework for
                 defining garbage collectors. When applied to
                 generational collection, it generalizes the notion of
                 younger/older to a partial order. It can describe
                 traditional generational and conservative techniques,
                 and lends itself to combining different techniques in
                 novel ways. We study in particular two new garbage
                 collectors inspired by this framework. Both these
                 collectors use conservative pointer-finding. The first
                 one is based on a rewrite of an existing
                 trace-and-sweep collector to use one level of
                 generation. The second one has a single parameter,
                 which controls how objects are partitioned into
                 generations; the value of this parameter can be changed
                 dynamically with no overhead. We have implemented both
                 collectors and present measurements of their
                 performance in practice.",
  annote =       "incomplete",
}

@Article{Baker:acm:sigplan:1993,
  author =       "Henry G. Baker",
  title =        "``{I}nfant Mortality'' and Generational Garbage
                 Collection",
  journal =      "SIGPLAN Notices",
  volume =       "28",
  number =       "4",
  pages =        "55--57",
  month =        apr,
  year =         "1993",
  checked =      "19940512",
  refs =         "11",
  keywords =     "generational garbage collection",
  abstract =     "Generation-based garbage collection has been advocated
                 by appealing to the intuitive but vague notion that
                 ``young objects are more likely to die than old
                 objects''. The intuition is, that if a generation-based
                 garbage collection scheme focuses its effort on
                 scanning recently created objects, then its scanning
                 efforts will pay off more in the form of more recovered
                 garbage, than if it scanned older objects. In this
                 note, we show a counterexample of a system in which
                 ``infant mortality'' is as high as you please, but for
                 which generational garbage collection is ineffective
                 for improving the average mark/cons ratio. Other
                 benefits, such as better locality and a smaller number
                 of large delays, may still make generational garbage
                 collection attractive for such a system, however.",
  sjb =          "The example where the generational system doesn't fair
                 so well is when objects die in an exponential decay
                 pattern. Suggests that papers on generational
                 collectors should include amongst other things the
                 mark/cons ratios and localities.",
}

@InProceedings{1991:oopsla:sharma,
  author =       "Ravi Sharma and Mary Lou Soffa",
  title =        "Parallel Generational Garbage Collection",
  editor =       "Andreas Paepcke",
  booktitle =    "{OOPSLA}~'91 Conference Proceedings: Object-Oriented
                 Programming Systems, Languages, and Applications",
  year =         "1991",
  publisher =    "ACM Press",
  ISBN =         "0-89791-446-5 (ACM), 0-201-55417-8 (Addison-Wesley)",
  ISSN =         "0362-1340",
  pages =        "16--32",
  url =          "https://www.acm.org/pubs/articles/proceedings/oops/117954/p16-sharma/p16-sharma.pdf",
  genterms =     "ALGORITHMS, DESIGN, LANGUAGES",
  categories =   "D.1.3 Software, PROGRAMMING TECHNIQUES, Concurrent
                 Programming, Parallel programming. D.3.2 Software,
                 PROGRAMMING LANGUAGES, Language Classifications,
                 Object-oriented languages. C.1.2 Computer Systems
                 Organization, PROCESSOR ARCHITECTURES, Multiple Data
                 Stream Architectures (Multiprocessors), Parallel
                 processors**. D.3.4 Software, PROGRAMMING LANGUAGES,
                 Processors. D.4.2 Software, OPERATING SYSTEMS, Storage
                 Management, Allocation/deallocation strategies.",
  annote =       "incomplete",
}

@InProceedings{DTAD:OOPSLAGC93,
  author =       "David Tarditi and Amer Diwan",
  title =        "The Full Cost of a Generational copying Garbage
                 Collection Implementation",
  booktitle =    "Workshop on Garbage Collection",
  month =        sep,
  year =         "1993",
  publisher =    "{ACM} Press",
  note =         "Only available online",
  ftpdir =       "cs.utexas.edu",
  filename =     "OOPSLA.93.GC/tarditi.ps",
}
@Book{Weaver:1994:SAM,
  author =       "David L. Weaver and Tom Germond",
  title =        "The {SPARC} Architecture Manual Version 9",
  publisher =    "Pren{\-}tice-Hall PTR",
  address =      "Upper Saddle River, NJ 07458, USA",
  pages =        "xxii + 357",
  year =         "1994",
  ISBN =         "0-13-099227-5",
  LCCN =         "QA76.9.A73S648 1992",
  bibdate =      "Fri Jul 22 08:37:56 1994",
  price =        "US\$33.00",
  acknowledgement = ack-nhfb,
}

@InProceedings{Diec99a,
  author =       "Sylvia Dieckmann and Urs Hoelzle",
  editor =       "R. Guerraoui",
  title =        "A Study of the Allocation Behavior of the {SPEC}jvm98
                 Java Benchmarks",
  booktitle =    "Proceedings ECOOP'99",
  series =       "LCNS 1628",
  pages =        "92--115",
  publisher =    "Springer-Verlag",
  address =      "Lisbon, Portugal",
  month =        jun,
  year =         "1999",
  keywords =     "olit ecoop99proc",
  abstract =     "We present an analysis of the memory usage for six of
                 the Java programs in the SPECjvm98 benchmark suite.
                 Most of the programs are real- world applications with
                 high demands on the memory system. For each program, we
                 measured as much low level data as possible, including
                 age and size distribution, type distribution, and the
                 overhead of object alignment. Among other things, we
                 found that non-pointer data usually represents more
                 than 50\% of the allocated space for instance objects,
                 that Java objects tend to live longer than objects in
                 Smalltalk or ML, and that they are fairly small.",
}

@inproceedings{DA99-ecoop-b,
  author =       "David L. Detlefs and Ole Agesen",
  title =        "Inlining of Virtual Methods",
  key =          "Detlefs&Agesen",
  pages =        "258-278",
  booktitle = "ECOOP'99 - Object-Oriented Programming",
  year =         "1999",
  organization = "AITO",
  publisher =    "Springer",		  
  month =        "June"
}

@inproceedings{ADG+99-oopsla,
   author = {O. Agesen and D. Detlefs and A. Garthwaite and R. Knippel and Y. S. Ramakrishna and D. White},
   title = "An Efficient Meta-lock for Implementing Ubiquitous Synchronization",
   booktitle = {Proceedings of OOPSLA'99},
   address = {Denver, Colorado, USA},
   month = nov,
   year = {1999}
}

@InProceedings{OTooleJame1994a,
  author =       "James O'Toole and Scott Nettles",
  booktitle =    "Conference on Lisp and Functional programming",
  title =        "Concurrent Replicating Garbage Collection",
  year =         "1994",
  url =          "https://www-psrg.lcs.mit.edu/ftpdir/pub/james/papers/lfp94.ps",
  month =        jun,
  publisher =    "ACM Press",
  scope =        "gc",
}

@TechReport(EllisLiAppel,
    Author = "John R. Ellis; Kai Li; and Andrew W. Appel",
    Key = "Ellis et al.",
    Title = "Real-time Concurrent Collection on Stock Multiprocessors",
    Institution = "Digital Equipment Corporation Systems Research Center",
    Number = "25",
    Month = "February",
    Year = "1988",
Annote = "Main innovation is the use of virtual-memory protection
primitives provided by most OS's to simulate locking of unscanned objects."
    )


@Article{Azagury:1999:CCM,
  author =       "Alain Azagury and Elliot K. Kolodner and Erez Petrank
                 and Zvi Yehudai",
  title =        "Combining card marking with remembered sets: how to
                 save scanning time",
  journal =      "ACM SIG{\-}PLAN Notices",
  volume =       "34",
  number =       "3",
  pages =        "10--19",
  month =        mar,
  year =         "1999",
  coden =        "SINODQ",
  ISSN =         "0362-1340",
  bibdate =      "Fri Apr 30 11:50:44 MDT 1999",
  url =          "https://www.acm.org:80/pubs/citations/proceedings/plan/286860/p10-azagury/",
  acknowledgement = ack-nhfb,
  keywords =     "algorithms; design; languages; performance; theory",
  subject =      "{\bf D.4.2} Software, OPERATING SYSTEMS, Storage
                 Management, Garbage collection. {\bf D.3.3} Software,
                 PROGRAMMING LANGUAGES, Language Constructs and
                 Features, Data types and structures. {\bf G.4}
                 Mathematics of Computing, MATHEMATICAL SOFTWARE,
                 Algorithm design and analysis.",
}

@Article{appe89,
  title =        "Simple Generational Garbage Collection and Fast
                 Allocation",
  author =       "Andrew W. Appel",
  institution =  "princeton",
  journal =      "Software Practice and Experience",
  publisher =    "Wiley",
  year =         "1989",
  volume =       "19",
  number =       "2",
  pages =        "171--183",
  url =          "https://www.cs.princeton.edu/faculty/appel/papers/143.ps",
  abstract =     "Generational garbage collection algorithms achieve
                 efficiency because newer records point to older
                 records; the only way an older record can point to a
                 newer record is by a store operation to a previously
                 created record, and such operations are rare in many
                 languages. A garbage collector that concentrates just
                 on recently allocated records can take advantage of
                 this fact. Such a garbage collector can be so efficient
                 that the allocation of records costs more than their
                 disposal. A scheme for quick record allocation attacks
                 this bottleneck. Many garbage-collected environments do
                 not know when to ask the operating system for more
                 memory. A robust heuristic solves this problem. This
                 paper presents a simple, efficient, low-overhead
                 version of generational garbage collection with fast
                 allocation, suitable for implementation in a Unix
                 environment.",
}


@Article(DijkstraLamportOTF78,
    Author = "Edsger W. Dijkstra and Leslie Lamport and A. J. Martin and C. S. Scholten and E. F. M. Steffens",
    Key = "Dijkstra et al.",
    Journal = "CACM",
    Title = "On-the-Fly Garbage Collection: An Exercise in Cooperation",
    Year = "1978",
    Month = "November",
    Volume = "21",
    Number = "11",
    Pages = "966-975",
Annote = "Coloring garbage collection."
    )


@Article(Steele75,
    Author = "Guy L. {Steele Jr.}",
    Key = "Steele",
    Journal = "CACM",
    Title = "Multiprocessing Compactifying Garbage Collection",
    Year = "1975",
    Month = "September",
    Volume = "18",
    Number = "9",
    Pages = "495-508"
    )

	
@InProceedings{,
  author = 	 {},
  title = 	 {},
  booktitle = 	 {},
  OPTcrossref =  {},
  OPTkey = 	 {},
  OPTpages = 	 {},
  OPTyear = 	 {},
  OPTeditor = 	 {},
  OPTvolume = 	 {},
  OPTnumber = 	 {},
  OPTseries = 	 {},
  OPTaddress = 	 {},
  OPTmonth = 	 {},
  OPTorganization = {},
  OPTpublisher = {},
  OPTnote = 	 {},
  OPTannote = 	 {}
}

@InProceedings{Doligez93,
  author =       "D. Doligez and X. Leroy",
  title =        "A Concurrent, Generational Garbage Collector for a
                 Multithreaded Implementation of {ML}",
  booktitle =    "Conference Record of the Twentieth Annual ACM
                 SIGPLAN-SIGACT Symposium on Principles of Programming
                 Languages",
  pages =        "113--123",
  publisher =    "ACM",
  address =      "New York, NY",
  year =         "1993",
  keywords =     "functional parallel",
  ISBN =         "0-89791-560-7",
  abstract =     "The design and implementation are presented of a
                 'quasi real-time' garbage collector for Concurrent Caml
                 Light, an implementation of ML with threads. This
                 two-generation system combines a fast, asynchronous
                 copying collector on the young generation with a
                 non-disruptive concurrent marking collector on the old
                 generation. This design crucially relies on the ML
                 compile-time distinction between mutable and immutable
                 objects.",

}

@Article(BW88-spe,
    Author = "Boehm, Hans-Juergen and Weiser, Mark",
    Key = "Boehm&Weiser",
    Journal = "Software Practice and Experience",
    Title = "Garbage Collection in an Uncooperative Environment",
    Year = "1988",
    Month = "September",
    Volume = "18",
    Number = "9",
    Pages = "807-820",
Annote = "A garbage collector for C.  Avoids the integer/pointer problem
by never moving anything."
    )


@inproceedings{AD97-oopslagc,
   author = {O. Agesen and D. Detlefs},
   title = "Finding References in {J}ava\tm\ Stacks",
   booktitle = {Proceedings of the OOPSLA'97 Workshop on Garbage Collection and Memory Management},
   address = {Atlanta, GA, USA},
   month = oct,
   year = {1997}
}

@InProceedings{Doligez94,
  author =       "Damien Doligez and Georges Gonthier",
  title =        "Portable, Unobtrusive Garbage Collection for
                 Multiprocessor Systems",
  booktitle =    "Conference Record of the Twenty-first Annual ACM
                 SIGPLAN-SIGACT Symposium on Principles of Programming
                 Languages",
  publisher =    "ACM Press",
  address =      "New York, NY, USA",
  ISBN =         "0-89791-636-0",
  pages =        "70--83",
  month =        "January",
  year =         "1994",
  bibdate =      "Mon May 3 12:50:22 MDT 1999",
  url =          "https://www.acm.org:80/pubs/citations/proceedings/plan/174675/p70-doligez/",
  abstract =     "We describe and prove the correctness of a new
                 concurrent mark-and-sweep garbage collection algorithm.
                 This algorithm derives from the classical on-the-fly
                 algorithm from Dijkstra {\em et al.\/} [9]. A
                 distinguishing feature of our algorithm is that it
                 supports multiprocessor environments where the
                 registers of running processes are not readily
                 accessible, without imposing any overhead on the
                 elementary operations of loading a register or reading
                 or initializing a field. Furthermore our collector
                 never blocks running mutator processes except possibly
                 on requests for free memory; in particular, updating a
                 field or creating or marking or sweeping a heap object
                 does not involve system-dependent synchronization
                 primitives such as locks. We also provide support for
                 process creation and deletion, and for managing an
                 extensible heap of variable-sized objects.",
  acknowledgement = ack-nhfb,
  keywords =     "algorithms; theory",
  subject =      "{\bf D.4.2} Software, OPERATING SYSTEMS, Storage
                 Management. {\bf D.3.4} Software, PROGRAMMING
                 LANGUAGES, Processors.",
}
	  
@techreport{WG99-rep,
   author = {D. White and A. Garthwaite},
   title = "The {GC} Interface in the {EVM}",
   institution = SUNLABS,
   number = {TR-98-67},
   year = {1999}
}

@TechReport(KungSong77,
    Author = "H. T. Kung and S. Song",
    Key = "Kung&Song",
    Title = "An Efficient Parallel Garbage Collector and its
Correctness Proof",
    Institution = "Carnegie Mellon University",
    Month = "September",
    Year = "1977",
    Annote = "Not read yet."
    )

@InProceedings{doma00a,
  author =       "Tamar Domani and Elliot K. Kolodner and Ethan Lewis
                 and Elliot E. Salant and Katherine Barabash and Itai
                 Lahan and Erez Petrank and Igor Yanover and Yossi
                 Levanoni",
  title =        "Implementing an On-the-fly Garbage Collector for
                 {J}ava",
  booktitle =    "Proceedings of the Second International Symposium on
                 Memory Management",
  editor =       "Tony Hosking",
  address =      "Minneapolis, MN",
  publisher =    "ACM Press",
  month =        oct,
  year =         "2000",
  ISBN =         "1-58113-263-8",
  abstract =     "Java uses garbage collection (GC) for the automatic
                 reclamation of computer memory no longer required by a
                 running application. GC implementations for Java
                 Virtual Machines (JVM) are typically designed for
                 single processor machines, and do not necessarily
                 perform well for a server program with many threads
                 running on a multiprocessor. We designed and
                 implemented an on-the-fly GC, based on the algorithm of
                 Doligez, Leroy and Gonthier~\cite{doli93,dili94} (DLG)
                 for Java in this environment. An {\em on-the-fly
                 collector}, a collector that does not stop the program
                 threads, allows all processors to be utilized during
                 collection and provides uniform response times. We
                 extended and adapted DLG for Java (e.g., adding support
                 for weak references) and for modern multiprocessors
                 without sequential consistency, and added performance
                 improvements (e.g., to keep track of the objects
                 remaining to be traced). We compared the performance of
                 our implementation with stop-the-world mark-sweep GC.
                 Our measurements show that the performance advantage
                 for our collector increases as the number of threads
                 increase and that it provides uniformly low response
                 times.",
}
@InProceedings{BaconPLDI01,
  author =       "David Bacon and Clement Attanasio and Han Lee and V.
                 T. Rajan and Stephen Smith",
  title =        "Java without the coffee breaks: a nonintrusive
                 multiprocessor garbage collector",
  pages =        "92--103",
  ISSN =         "0362-1340",
  editor =       "Cindy Norris and Jr. James B. Fenwick",
  booktitle =    "Proceedings of the {ACM} {SIGPLAN} '01 Conference on
                 Programming Language Design and Implementation
                 ({PLDI}-01)",
  month =        jun # " ~20--22",
  series =       "ACM SIGPLAN Notices",
  volume =       "36.5",
  publisher =    "ACM Press",
  address =      "N.Y.",
  year =         "2001",
}

@TechReport{DeTreville90b,
    Author = "DeTreville, John",
    Key = "DeTreville",
    Title = "Experiences with Concurrent Garbage Collectors for
{M}odula-2+",
    Year = "1990",
  institution =  "Digital Equipment Corporation Systems Research Center",
    number = 	 "64",
}

@InProceedings{DomaniKolPet00,
  author =       "Tamar Domani and Elliot K. Kolodner and Erez Petrank",
  title =        "A Generational On-the-Fly Garbage Collector for
                 {J}ava",
  booktitle =    "Proceedings of the {ACM} {SIGPLAN} '00 Conference on
                 Programming Language Design and Implementation",
  address =      "Vancouver, British Columbia",
  month =        jun # " 18--21,",
  year =         "2000",
  pages =        "274--284",
}

@InProceedings{Printezis00,
  author =       "Tony Printezis and David Detlefs",
  title =        "A Generational Mostly-concurrent Garbage Collector",
  booktitle =    "Proceedings of the International Symposium on Memory Management",
  address =      "Minneapolis, Minnesota",
  month =        oct # " 15--19,",
  year =         "2000",
}

@InProceedings{Flood01,
  author =       "Christine H. Flood and David Detlefs and Nir Shavit and Xiaolan Zhang",
  title =        "Parallel Garbage Collection for Shared Memory Multiprocessors",
  booktitle =    "{Proceedings of the Java\tm\ Virtual Machine Research and Technology Symposium}",
  organization = "USENIX",
  address =      "Monterey",
  month =        "April",
  year =         "2001"
}


@InProceedings{Heil00,
  author =       "Timothy H. Heil and James E. Smith",
  title =        "Concurrent Garbage Collection Using Hardware-Assisted Profiling",
  booktitle =    "Proceedings of the International Symposium on Memory Management",
  address =      "Minneapolis, Minnesota",
  month =        oct # " 15--19,",
  year =         "2000",
}

@InProceedings{holz93,
  author =       "Urs H{\"o}lzle",
  title =        "A Fast Write Barrier for Generational Garbage
                 Collectors",
  booktitle =    "{OOPSLA/ECOOP} '93 Workshop on Garbage Collection in
                 Object-Oriented Systems",
  month =        oct,
  editor =       "Eliot Moss and Paul R. Wilson and Benjamin Zorn",
  year =         "1993",
  url =          "ftp://self.stanford.edu/pub/papers/write-barrier.ps.Z",
}



@InProceedings{HM:Train,
  author =       "Richard L. Hudson and J. Eliot B. Moss",
  title =        "Incremental collection of mature objects",
  booktitle =    "International Workshop on Memory Management",
  editor =       "Yves Bekkers and Jacques Cohen",
  year =         "1992",
  month =        sep,
  address =      "St. Malo, France",
  publisher =    "Springer-Verlag",
  series =       "Lecture Notes in Computer Science",
  pages =        "388--403",
}
		  
@TechReport{agesen:gcpoints,
  author = 	 "Ole Agesen",
  title = 	 "{GC} Points in a Threaded Environment",
  institution =  "Sun Microsystems Laboratories",
  year = 	 "1998",
  key = 	 "Agesen",
  number = 	 "98-70"
}