即時遊戲中的垃圾回收

lua-users home
wiki

基於 Lua 的即時遊戲中,垃圾回收的一些注意事項。請更正、擴充和更新這些注意事項。——ThatcherUlrich

版本注意事項:Lua 5.1 已經導入漸進式 GC,因此其中許多事項可能僅供歷史參考。

為了維持低延遲操作,必須允許垃圾回收器定期執行少量的工作。對於遊戲來說,這表示遊戲迴圈應該在每個畫面中呼叫一次垃圾回收器。這是比文獻上通常討論的更粗略的顆粒度,文獻上通常著重於多處理器的演算法。不過 Johnstone 的論文明確指出了單處理器的案例。
寫入障礙相當簡單;有一些變異視的確切演算法而定,但最後會變成大概 5 或 10 行 C 程式碼和 10 或 20 條指令。

實作注意事項:對於 Lua 實作來說,在它寫入內部(表格)指標的任何位置使用巨集會很好(也許它已經做了)。然後,一個增量收集器外掛程式可以定義這個巨集為呼叫寫入障礙的函數(或寫入障礙本身的內聯程式碼)。


最近的變更 · 喜好設定
編輯 · 歷史記事
最後編輯在 2009 年 3 月 16 日下午 12:14 (GMT) (diff)