或者換句話說,有沒有像'併發複製算法'這樣的算法,可以幫助在較小的暫停次要收集?併發收集可以運行在年輕一代的次要收集
2
A
回答
2
是的,存在不同的這種算法。
可以同時運行的Eden/Young-Generation算法最簡單的方法就是使用多個Edens和Gen 1堆。根據哪個線程就緒(當前不是「複製收集」,即「複製引用的所有內容然後將指針切換到新內存」),該線程將用指向該對象的指針作出響應;線程可以通過比較指向這些堆的最小/最大地址的指針來識別對象屬於哪個Eden或Gen 1堆。
您還可以實現單個堆的併發副本:創建線程池並且每當副本集合發生時,都將地址範圍的一部分分配給每個線程。
如果你需要一個更具體的想法,只是專門化你的問題。
0
java.util.concurrent包有許多類來幫助這個主題領域。
例如,CopyOnWriteArrayList,根據的Javadoc是:
ArrayList的,其中所有可變操作(添加,設置,等等)的一個線程安全的變體是通過使一個新的副本實現底層數組。
如果你擔心線程安全(看起來你是),那麼這個包中可能有一個類會對你有用。
相關問題
- 1. 如何衡量年輕一代收集的記憶的總和?
- 2. 你應該在完整的垃圾收集中首先收集年輕一代嗎?
- 3. 使用「年」,並收集在MongDB
- 4. 併發收集優先
- 5. 可以收集行爲作爲一個nagios替代?
- 6. 按年齡收集autoCleanup
- 7. 查找垃圾收集器最後一次在.NET中運行
- 8. 偶然的年輕垃圾收集暫停
- 9. 垃圾收集 - 老一代
- 10. MOSS要求收集
- 11. 收集:RRD替代
- 12. 應用程序是否可以在後臺運行並收集數據?
- 13. kSoap2發送收集
- 14. 獲取值,並在收集
- 15. 反XML組「收集」未在收集
- 16. springdata JPA發現在收集
- 17. Scrum的收集要求
- 18. 集團收集
- 19. 如何在年輕一代的收藏中發現活的物體?
- 20. 收集/選擇要計算的行
- 21. 並行運行的許多功能,並收集所有結果以列表
- 22. rails_admin收集操作執行兩次
- 23. 收集變量並縮短代碼
- 24. 用於收集可收集物品的std :: function的替代方案
- 25. jQuery的迭代收集與
- 26. Neo4j的暗號查詢收集收集
- 27. 如何關閉併發垃圾收集?
- 28. 併發收集VS鎖定列表
- 29. Java 7未能收集由java收集的永久代5
- 30. 在收集