2014-09-21 88 views
1

我在考慮減少內存受限系統(如移動設備)中垃圾收集器的開銷。通過開銷我的意思是暫停時間,或垃圾收集所花費的總執行時間的一小部分。我開始瞭解硬件輔助垃圾收集器的一些事情,並且我有興趣開發它。 我想知道,在這方面做了什麼。 我可以使用模擬器來估計我的垃圾回收器的效率嗎?或者我必須在芯片上製作我的設計?有沒有可以運行Java程序的模擬器。H/W輔助垃圾收集器

+0

嘗試在http://cs.stackexchange.com/上詢問,每個人都同意的唯一真正的H/W協助是能夠繞過CPU緩存寫入(也可能讀取)到RAM。 – 2014-09-27 11:48:54

回答

0

我想知道,在這方面所做的一切都已經完成。

如果回到1980年代,Symbolics 3600(又名Lisp Machine)對標記內存和寫屏障提供硬件支持。後來還有關於話題的學術研究。然而,收到的智慧是支持垃圾收集的專用硬件不符合成本效益[1](第221頁)。

我可以使用模擬器來估計我的垃圾收集器的效率,或者我必須在芯片上製作我的設計?

我想這兩種方法將工作(給予足夠的努力),但都具有使其很難「執行」的問題,都保持開放是否任何事情,你發現很可能會成爲商業上可行的問題。

在開始認真地討論這個話題之前,你應該對以前的研究做一個徹底的回顧。至少抓住下面的書籍,找到並閱讀他們提到的硬件gc支持的論文和文章。

有什麼模擬器可以運行java程序。

你說的是一個硬件模擬器,它可以運行編譯到模擬硬件(假設)指令集的程序。你的項目的一部分將是實現一個Java編譯器後端來生成該指令集中的代碼。

這樣的模擬器+編譯器可能存在,但有可能它不會提供給您。

參考文獻:

[1] 「垃圾收集:算法用於自動存儲器管理」 由R. Jones和R.林斯,威利1996

[2]「的垃圾收集手冊:藝術自動內存管理「由R.瓊斯,答霍斯金斯和R.莫斯。查普曼和霍爾,2011年

1

有一個working approach to HW supported GC

崖點擊寫道:事情我們專門爲Java做:

GC讀屏障能夠完全並行&併發GC;我們可以無限期地在400G堆上維持40G /秒的分配,最大暫停時間爲10-20毫秒。由於讀取屏障(部分可能,因爲我們擁有操作系統並可以播放主要的頁面映射技巧),這種超級GC是部分可能的。

的閱讀屏障將在故障快速陷阱,在默認情況下得到提升到GC-模式的陷阱處理程序。這可讓故障CPU修復對象引用並繼續,而無需等待GC追上。

當然,整個文本是值得一讀的。你最有可能想看這video