2008-10-29 71 views
10

我對垃圾收集的工作方式感興趣。我已經讀過一些如mark-and-sweep,stop-and-copy,generational GC等的工作......我想試驗一下這些方法並比較它們的行爲。什麼是開始嘗試自己的好方法?理想情況下,C,Java或Python(儘管後兩個本身是垃圾收集的,所以它似乎很難使用它們......)我如何試驗垃圾收集?

回答

14

從來沒有玩過它,但總是被提及用於C/C++的是Hans Boehm's

+0

我想補充,這被認爲是*如果你想保持內/ C的C++而不是使用虛擬機... – 2008-10-29 20:34:38

+0

+1,我經常使用它,當我工作的事情非常的首選*垃圾收集器複雜的地方,雙免費()會拼出災難。 – 2009-03-03 04:58:41

+0

這是正確的,它也是gcc項目正在使用的GC。 – none 2009-05-20 19:33:03

0

實現您自己的JVM。沒有什麼花哨,只是基礎。有很多很多的程序/編譯器/語言可以生成JVM代碼,因此您有足夠的材料可以進行測試。

2

.NET運行時和Java運行時現在是開源的,所以如果您想要使用當前的支持編程語言,您可以嘗試運行時它自己。但是,如果你想自己做,你可能需要創建自己的運行時,它有自己的語言。

0

好玩,但垃圾收集是一個黑暗的藝術。不要讓它工作,而是要使它與最新的虛擬機的效率一起工作。

我們正在談論多階段和魔術,這使得分配速度比malloc的堆棧分配速度更可比。

整個伊甸園的概念岩石。

您可能想閱讀一些關於所用技術的白皮書。

這裏,似乎有一個很好的概述(只是從一個快速谷歌/掃描)誰又發展了Factor programming language寫了一些職位對他實施垃圾收集的文章

http://www.devx.com/Java/Article/21977/0/page/1

0

MMTk包含一大組高性能垃圾收集器。它包括:

  • 複製收集
  • 跟蹤收藏家
  • 引用計數收藏家

它還具有:

  • 阻止世界收藏家
  • 併發收藏家

由於它是一個研究平臺,它有一些先進的收集器,如generation reference counting collector