2012-11-03 30 views
0

我對設計用於音頻合成的方案風格很感興趣,但我非常關心如何在適應低延遲時做適當的垃圾收集音頻需要。我想知道是否有人在現場可能會指向我可能適合這種環境的垃圾收集算法。我正在研究實時垃圾收集,這似乎是有道理的,因爲我想限制垃圾收集器需要的時間,所以我不會在音頻中暫停......雖然也許收集器只是「足夠快」並且分發它的工作會很好嗎?我一點也不擔心多線程/多處理,我絕對不會擔心爲了實現這些目標而浪費大量空間。我追求可預測,簡單,快速。對垃圾收集算法感興趣,希望能夠犧牲空間

謝謝!

+0

爲什麼這個downvoted? –

+0

很確定,這個問題沒有涵蓋適當的上下文,沒有實用的東西。這很難回答,但我沒有投票。 – Lion

+0

需要什麼樣的背景?我老實說甚至不會提供用例。我在說我需要一個算法,這是我願意做的妥協。這是一個完全可以滿足的問題。考慮到我已經給出了一個很酷的用例,這也是完全實用的! – Evan

回答

1

在Unix類操作系統的單進程設置中,我聽說過一種有趣的方法。 (這是Nickle的實驗實現,但我不知道它是否合併爲主)。

它使用了一個簡單的標記掃描收集器,但這裏的技巧:當你想運行一個標記階段,fork() 。子進程運行標記,併發送一個對象列表,以便通過管道釋放回父對象,這可以在閒暇時逐漸釋放它們。

這是有效的,因爲孩子正在操作系統的內存管理器在硬件MMU的幫助下以合理的效率維護父內存狀態的寫時複製快照。一旦對象變得無法訪問,它將不會再被引用,因此從舊快照標記總是會對可以釋放的對象進行保守估計。


編輯:我可以爲這項工作找到最好的參考就是碼建議爲它的夏季:http://web.cecs.pdx.edu/~juenglin/revamping.html