| 研究生: |
賴俊安 Lai, Chun-An |
|---|---|
| 論文名稱: |
輕量級環狀偵測器之設計與實作:應用於參考計數式之垃圾收集系統 Design and Implementation of a Lightweight Cycle Detector for Reference Counting Garbage Collection Systems |
| 指導教授: |
侯廷偉
Hou, Ting-Wei |
| 學位類別: |
碩士 Master |
| 系所名稱: |
工學院 - 工程科學系 Department of Engineering Science |
| 論文出版年: | 2004 |
| 畢業學年度: | 92 |
| 語文別: | 中文 |
| 論文頁數: | 66 |
| 中文關鍵詞: | 垃圾收集 、參考計數 、環狀偵測器 |
| 外文關鍵詞: | Jikes RVM |
| 相關次數: | 點閱:39 下載:3 |
| 分享至: |
| 查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
本論文針對參考計數法無法回收環狀結構的問題,發展一環狀偵測器,能夠比目前Lins演算法更具有效率。
本研究提出一個新穎的環狀偵測器,將目前環狀偵測器的時間複雜度,由O(2n)~O(3n),下降至O(n),雖然只有少量的垃圾環狀結構無法回收,但是卻有相當好的效率,因此本研究提出的演算法稱為輕量級環狀偵測器。
我們將輕量級演算法實作於IBM的Jikes RVM(Research Java Virtual Machine),並且使用SPEC的效能測試程式,進行環狀偵測器的效能評估,與Bacon的演算法相較,輕量級演算法確實有相當高的效率,時間成本可以降低1/2到1/3,例如SPECJVM98有36%至57%的效能提升,而SPECjbb2000有56%至57%的效能提升。
In this thesis, we focus on a major disadvantage of reference counting technique — the inability to reclaim cyclic data structures. We have developed a novel cycle detector whose time complexity is O(n). Compared to cycle detectors based on Lins’ approach that need O(2n)~O(3n), ours is more efficient. We call it a “Lightweight Cycle Detector”.
For performance evaluation, we implemented the algorithm on a well-known Java execution environment, IBM Jikes RVM (Research Java Virtual machine), and used SPECjvm98 as the benchmark programs.
The measurements show that the Lightweight algorithm is indeed much more efficient than Bacon’s algorithm, a modern cycle detector based on Lins’ approach. The experiments also show that most of the garbage cycles generated by benchmark programs are collected successfully.
[1]A. W. Appel, ”Simple generational garbage collection and fast allocation,” Software Practice and Experience, vol.19 no.2, p.171-183, February 1989.
[2]H. Azatchi and E. Petrank,” Integrating generations with advanced reference counting garbage collectors,” In International Conference on Compiler Construction, Warsaw, Poland, p.185-199, April 2003.
[3]David F. Bacon , and V. T. Rajan, “Concurrent Cycle Collection in Reference Counted Systems,” Proceedings of the 15th European Conference on Object-Oriented Programming, p.207-235, June 2001.
[4]David F. Bacon , Clement R. Attanasio , Han B. Lee , V. T. Rajan , and Stephen Smith, “Java without the coffee breaks: a nonintrusive multiprocessor garbage collector,” Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation, Snowbird, Utah, p.92-103, June 2001.
[5]S. M. Blackburn and K. S. McKinley,” Fast garbage collection without a long wait,” Technical Report TR-CS-02-06, Dept. of Computer Science, Austrailian National University, November 2002.
[6]Stephen M. Blackburn, and Kathryn S. McKinley,” Ulterior reference counting: fast garbage collection without a long wait,” Proceedings of the 18th ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, p.344 – 358, Anaheim, California, October 2003.
[7]David R. Brownbridge.” Cyclic reference counting for combinatory machines,” Functional Programming Languages and Computer Architecture, p.273-288, Nancy, France, September 1985.
[8]Daniel G. Bobrow, “Managing Reentrant Structures Using Reference Counts,” ACM Transactions on Programming Languages and Systems (TOPLAS), vol.2 no.3, p.269-273, New York, July 1980.
[9]T.W. Christopher, “Reference count garbage collection”, Software Practice and Experience, vol.14 no.6, p. 503-507, 1984.
[10]Tamar Domani, Gal Goldshtein, Elliot K. Kolodner, Ethan Lewis, Erez Petrank, and Dafna Sheinwald, “Thread-Local Heap for Java,” Proceedings of the International Symposium On Memory Management (ISMM), p.76 – 87, Berlin, Germany, June 2002.
[11]John DeTreville,” Experience with concurrent garbage collectors for Modula-2+,” Technical Report 64, DEC Systems Research Center, Palo Alto, CA, August 1990.
[12]Fabrice Le Fessant, “Detecting distributed cycles of garbage in large-scale systems,” Proceedings of the twentieth annual ACM symposium on Principles of distributed computing, p.200-209, Newport, Rhode Island, August 2001.
[13]Ting-We Hou, and Chin-Yang Lin, “A single-trace cyclic reference counting algorithm,” submitted for Information Processing Letters.
[14]R.E. Jones, and R.D. Lins, Garbage Collection Algorithms for Dynamic Memory Management, John Wiley & Sons, New York, (1996).
[15]Brain Kennedy,” The features of object oriented abstract type hierarchy(OATH),” Proceedings of Isenix C++ Conference, p.41-50, Usenix Association, April 1990.
[16]R.D. Lins,“An efficient algorithm for cyclic reference counting,” Information Processing Letters, vol.83 no.3, p.145-150, August 2002 .
[17]R.D. Lins, “Cyclic Reference counting with lazy mark-scan,” Information Processing Letters, vol.44 no.4, p.215-220, December 1992.
[18]R.D. Lins, “Generational cyclic reference counting,” Information Processing Letters, vol.46 no.1, p.19-20, April 1993.
[19]Y. Levanoni and E. Petrank, “A Scalable Reference Counting Garbage Collector,” Dept. of Computer Science, Technion, November 1999.
[20]Y. Levanoni and E. Petrank, “An on-the-fly reference counting garbage collector for Java”, ACM Conference Proceedings on Object–Oriented Programming Systems, Languages, and Applications, p. 367–380, Tampa, Florida, October, 2001.
[21]A.D. Martinez, R. Wachenchauzer, and R.D. Lins, “Cyclic reference counting with local mark-scan,” Information Processing Letters, v.34 n.1, p.31-35, February 1990.
[22]John McCarthy, “Recursive functions of symbolic expressions and their computation by machine,” Communications of the ACM, vol.3, no.4, p.184-195, New York, April 1960.
[23]E. J. H. Pepels, M. C. J. D. van Eekelen, and M. J. Plasmeijer, “A cyclic reference counting algorithm and its proof,” Technical Report 88-10, Computing Science Department, University of Nijmegen, 1988.
[24]T. Printezis and D. Detlefs, “A generational mostly-concurrent garbage collector,” Proceedings of the International Symposium On Memory Management (ISMM), p.143 - 154 Minneapolis, Minnesota, October, 2000.
[25]Srinivas Ashwin, Prasan Roy, S. Seshadri, Abraham Silberschatz, and S. Sudarshan, “Garbage Collection in Object Oriented Databases Using Transactional Cyclic Reference Counting,” Very Large Data Bases Journal Springer-Verlag(VLDB). vol.7, no.3, p.179-193, New York, August 1998.
[26]Standard Performance Evaluation Corporation, SPECjvm98 Documentation, release 1.03 edition, March 1999.
[27]Standard Performance Evaluation Corporation, SPECjbb2000 (Java Business Benchmark) Documentation, release 1.01 edition, 2001.
[28]Standard Performance Evaluation Corporation, http://www.spec.org/.
[29]Jon D. Salkild, “Implementation and analysis of two reference counting algorithms,” Master’s thesis, University College, Londo, 1987.
[30]Umesh Maheshwari, and Barbara Liskov, “Collecting distributed garbage cycles by back tracing,” Proceedings of the sixteenth annual ACM symposium on Principles of distributed computing, p.239-248, Santa Barbara, California, August 1997.
[31]Stephen C. Vestal, Garbage collection: “An Exercise in Distributed, Fault-Tolerant Programming,” PhD thesis, University of Washington, Seattle, WA, 1987.
[32]X. Ye and J. Keane, “Collecting cyclic garbage in distributed systems,” Proceedings of the 1997 International Symposium on Parallel Architectures, Algorithms and Networks, p.227-231, December 1997.