我在考慮減少內存受限系統(如移動設備)中垃圾收集器的開銷。通過開銷我的意思是暫停時間,或垃圾收集所花費的總執行時間的一小部分。我開始瞭解硬件輔助垃圾收集器的一些事情,並且我有興趣開發它。 我想知道,在這方面做了什麼。 我可以使用模擬器來估計我的垃圾回收器的效率嗎?或者我必須在芯片上製作我的設計?有沒有可以運行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. 垃圾收集
- 4. Renderscript和垃圾收集器
- 5. 垃圾收集器閃存
- 6. 垃圾收集器asp.net
- 7. Node.js的垃圾收集器
- 8. 垃圾收集器vs池
- 9. .NET垃圾收集器
- 10. 垃圾收集器Flash Player
- 11. Jruby,垃圾收集器,Redis
- 12. SpiderMonkey垃圾收集器
- 13. 垃圾收集java
- 14. DoctrineCommonCache垃圾收集?
- 15. Java垃圾收集
- 16. C#垃圾收集
- 17. Java垃圾收集
- 18. WeakEvent垃圾收集
- 19. GWT垃圾收集
- 20. 垃圾收集YGCT和垃圾收集時間不斷上升
- 21. 垃圾收集器和彈簧集成
- 22. JavaScript - 垃圾收集器計時器?
- 23. 垃圾收集器如何確定對象是否是垃圾?
- 24. 垃圾收集器如何檢測垃圾?
- 25. 垃圾收集:將對象收集
- 26. 垃圾收集是由
- 27. 垃圾收集提交git
- 28. 從垃圾收集日誌
- 29. 垃圾收集緩存WeakMaps
- 30. SoftReference太早收集垃圾
嘗試在http://cs.stackexchange.com/上詢問,每個人都同意的唯一真正的H/W協助是能夠繞過CPU緩存寫入(也可能讀取)到RAM。 – 2014-09-27 11:48:54