2011-06-11 29 views
4

什麼是Gambit-C的GC機制?我對製作交互式應用程序感到好奇。我想知道它是否可以避免突發GC操作。什麼是Gambit-C的GC機制?

+0

在一天結束時,它只是歸結爲用戶體驗 - 只要沒有用戶*明顯*暫停... – 2011-06-11 18:45:22

+0

http:// dynamo .iro.umontreal.ca /〜gambit/wiki/index.php/Notes_on_Memory_Management似乎表示正在使用ref-counting,但這是2007年的一些註釋(這意味着可能會在這些情況下發生立即釋放)。 – 2011-06-11 18:49:52

+0

@pst它是軟實時應用程序的結果嗎?如果它使用即時參考計數,它如何正確處理循環參考? – Eonil 2011-06-12 03:23:52

回答

1

根據http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Debugging#Garbage_collection_threshold開局有一定的控制:

垃圾收集閾值

注重運行時選擇H(以千字節的最大堆大小)和L(livepercent)。有關更多信息,請參閱參考手冊。將livepercent設置爲5意味着垃圾收集將在爲垃圾收集的對象分配19倍的內存時發生,而不是爲不應該的對象分配內存。這個選項在那裏的原因是爲了控制垃圾收集器應該關於內存消耗的節約/慷慨,還是控制CPU負載的重量/重量。

您可以隨時強制垃圾回收(## gc)。

如果強制垃圾回收後,一些少量的操作,或近似連續安排它,或設置livepercent喜歡90然後大概GC將頻繁地運行,而不是做的很每次運行。整體而言,這可能會更加昂貴,但避免費用爆炸。然後,您可以相當輕鬆地爲該費用進行預算,以儘快實現服務。

2

根據這些線程:

開局具有傳統停止的世界GC至少要等到九月使用預分配的對象推薦2008年人們在線程共同避免GC操作本身。我無法瞭解當前的實施情況。

*很難與對話保持一致。因爲我不能將沒有自己寫的對象聚集起來,最終全面的GC將會在某個時候被累積的小的/非集中的臨時對象發生。但@Gregory提到的方法可能有助於避免此問題。不過,我希望增量GC添加到Gambit :)