|
ABSTRACT
We document the desi n and implementation of a "production" incremental garbage collector for GHC 6.2.It builds on our earlier work (Non-stop Haskell)that exploited GHC's dynamic dispatch mechanism to hijack object code pointers so that objects in to-space automatically scavenge themselves when the mutator attempts to "enter" them. This paper details various optimisations based on code specialisation that remove the dynamic space,and associated time, overheads that accompanied our earlier scheme.We detail important implementation issues and provide a detailed evaluation of a range of design alternatives in comparison with Non-stop Haskell and GHC's current generational collector.We also show how the same code specialisation techniques can be used to eliminate the write barrier in a enerational collector.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
 |
2
|
|
 |
3
|
David F. Bacon , Perry Cheng , V. T. Rajan, A real-time garbage collector with low overhead and consistent utilization, Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.285-298, January 15-17, 2003, New Orleans, Louisiana, USA
|
 |
4
|
|
 |
5
|
|
 |
6
|
G. L. Burn , S. L. Peyton Jones , J. D. Robson, The spineless G-machine, Proceedings of the 1988 ACM conference on LISP and functional programming, p.244-258, July 25-27, 1988, Snowbird, Utah, United States
[doi> 10.1145/62678.62717]
|
 |
7
|
|
 |
8
|
|
| |
9
|
J. DeTreville. Experience with conncurrent garbage collectors for Modula-2+. Technical Report 64, DEC Systems Research Center, Palo Alto, CA, August 1990.
|
 |
10
|
Barry Hayes, Using key object opportunism to collect old objects, Conference proceedings on Object-oriented programming systems, languages, and applications, p.33-46, October 06-11, 1991, Phoenix, Arizona, United States
|
 |
11
|
|
| |
12
|
|
| |
13
|
|
| |
14
|
W. Partain. The nofib Benchmark Suite of Haskell Programs. Dept. of Computer Science, University of Glasgow, 1993.
|
| |
15
|
PAPI: Performance Application Programming Interface http://icl.cs.utk.edu/papi/
|
| |
16
|
|
 |
17
|
|
| |
18
|
S. Peyton Jones. The Spineless Tagless g-machine: Second attempt. In Workshop on the Parallel Implementation of Functional Languages, volume CSTR 91-07, pages 147--91. University of Southampton, 1991.
|
| |
19
|
S. Peyton Jones. Implementing lazy functional languages on stock hardware: the Spineless Tagless g-machine. In Journal of Functional Programming, pages 127--202, 1992.
|
| |
20
|
S. Peyton Jones, S. Marlow, and A. Reid. The STG runtime system (revised). Draft paper, Microsoft Research Ltd, 1999.
|
 |
21
|
|
| |
22
|
|
| |
23
|
R.A. Shaw. Improving garbage collector performance in virtual memory. Technical Report CSL-TR-87-323, Stanford University, March 1987.
|
 |
24
|
|
| |
25
|
Valgrind, an open-source memory debugger for x86-linux. http://valgrind.kde.org.
|
| |
26
|
|
| |
27
|
|
CITED BY 5
|
|
|
|
|
|
|
|
|
|
|
A. M. Cheadle , A. J. Field , J. W. Ayres , N. Dunn , R. A. Hayden , J. Nystrom-Persson, Visualising dynamic memory allocators, Proceedings of the 2006 international symposium on Memory management, June 10-11, 2006, Ottawa, Ontario, Canada
|
|