我在考慮減少內存受限系統(如移動設備)中垃圾收集器的開銷。通過開銷我的意思是暫停時間,或垃圾收集所花費的總執行時間的一小部分。我開始瞭解硬件輔助垃圾收集器的一些事情,並且我有興趣開發它。 我想知道,在這方面做了什麼。 我可以使用模擬器來估計我的垃圾回收器的效率嗎?或者我必須在芯片上製作我的設計?有沒有可以運行Java程序的模擬器。H/W輔助垃圾收集器
回答
我想知道,在這方面所做的一切都已經完成。
如果回到1980年代,Symbolics 3600(又名Lisp Machine)對標記內存和寫屏障提供硬件支持。後來還有關於話題的學術研究。然而,收到的智慧是支持垃圾收集的專用硬件不符合成本效益[1](第221頁)。
我可以使用模擬器來估計我的垃圾收集器的效率,或者我必須在芯片上製作我的設計?
我想這兩種方法將工作(給予足夠的努力),但都具有使其很難「執行」的問題,都保持開放是否任何事情,你發現很可能會成爲商業上可行的問題。
在開始認真地討論這個話題之前,你應該對以前的研究做一個徹底的回顧。至少抓住下面的書籍,找到並閱讀他們提到的硬件gc支持的論文和文章。
有什麼模擬器可以運行java程序。
你說的是一個硬件模擬器,它可以運行編譯到模擬硬件(假設)指令集的程序。你的項目的一部分將是實現一個Java編譯器後端來生成該指令集中的代碼。
這樣的模擬器+編譯器可能存在,但有可能它不會提供給您。
參考文獻:
[1] 「垃圾收集:算法用於自動存儲器管理」 由R. Jones和R.林斯,威利1996
[2]「的垃圾收集手冊:藝術自動內存管理「由R.瓊斯,答霍斯金斯和R.莫斯。查普曼和霍爾,2011年
有一個working approach to HW supported GC:
崖點擊寫道:事情我們專門爲Java做:
GC讀屏障能夠完全並行&併發GC;我們可以無限期地在400G堆上維持40G /秒的分配,最大暫停時間爲10-20毫秒。由於讀取屏障(部分可能,因爲我們擁有操作系統並可以播放主要的頁面映射技巧),這種超級GC是部分可能的。
也
的閱讀屏障將在故障快速陷阱,在默認情況下得到提升到GC-模式的陷阱處理程序。這可讓故障CPU修復對象引用並繼續,而無需等待GC追上。
當然,整個文本是值得一讀的。你最有可能想看這video。
- 1. 垃圾收集器
- 2. 藉助GCViewer優化垃圾收集器
- 3. Renderscript和垃圾收集器
- 4. Node.js的垃圾收集器
- 5. .NET垃圾收集器
- 6. 垃圾收集器Flash Player
- 7. 垃圾收集器vs池
- 8. 垃圾收集器asp.net
- 9. Jruby,垃圾收集器,Redis
- 10. 垃圾收集java
- 11. Java垃圾收集
- 12. Java垃圾收集
- 13. C#垃圾收集
- 14. GWT垃圾收集
- 15. DoctrineCommonCache垃圾收集?
- 16. JavaScript - 垃圾收集器計時器?
- 17. 垃圾收集器如何確定對象是否是垃圾?
- 18. Objective-C的垃圾收集
- 19. 延遲垃圾收集?
- 20. 數量的垃圾收集
- 21. 瞭解Actionscript垃圾收集
- 22. Android - 檢測垃圾收集
- 23. JavaScript垃圾收集暫停
- 24. 結構和垃圾收集
- 25. bash中的垃圾收集
- 26. 的Java newSingleThreadExecutor垃圾收集
- 27. 類垃圾收集任務
- 28. Java垃圾收集和空
- 29. lua垃圾收集錯誤?
- 30. 方法和垃圾收集
嘗試在http://cs.stackexchange.com/上詢問,每個人都同意的唯一真正的H/W協助是能夠繞過CPU緩存寫入(也可能讀取)到RAM。 – 2014-09-27 11:48:54