我想了解這一點,但是當我設置最大堆大小時,多線程環境中的每個線程是否創建自己的堆並具有相同的大小?堆被共享到多個線程嗎?
0
A
回答
3
......多線程環境中的每個線程是否創建自己的堆並具有相同的大小?
不是。有一個堆由Java進程中的所有線程共享。
可以使用TLAB(線程本地分配緩衝區)運行JVM以減少多線程應用程序中與分配相關的爭用。但是,這些只是具有Java堆的Eden空間的區域。不分離堆。此外,物體將根據需要由GC移動到其他地方。
參考文獻:
同一進程共享的
2
線程相同的虛擬存儲器和堆。
實際上,內存管理器可以維護專用於每個單獨線程的本地內存池。它試圖平衡泳池。這是作爲優化完成的「底層」,它對你來說是不可見的,所以線程使用分配給進程的整個堆。
相關問題
- 1. 多個進程可以共享堆內存嗎?
- 2. 線程共享堆棧位置?
- 3. 多線程共享變量
- 4. 多線程共享資源
- 5. 多線程 - 共享數據
- 6. 多線程共享變量
- 7. 多個線程可以同時訪問共享內存嗎?
- 8. 多個服務共享一個進程,多少個「主」線程?
- 9. 進程VS線程:兩個進程可以共享相同的共享內存嗎?可以兩個線程?
- 10. 線程之間共享指針嗎?
- 11. 兩個進程共享相同的堆
- 12. Java多線程程序:多線程中的對象共享
- 13. PageContext線程共享
- 14. 多個JVM進程可以共享公共類的內存嗎?
- 15. 多線程訪問「共享」列表框
- 16. 多線程中的WebSphere共享連接
- 17. C++多線程共享資源
- 18. 多線程文件(共享存儲器)
- 19. C# - 多線程 - 共享數據
- 20. 與多線程共享numpy數組
- 21. 共享列表上的多線程
- 22. C#與多線程共享鎖
- 23. 提升多線程和共享變量
- 24. 多線程共享本地變量
- 25. CUDA多線程寫入共享變量
- 26. 共享對象和多線程問題。我應該在乎嗎?
- 27. 在多線程中共享數據 - 是非靜態變量嗎?
- 28. 共享EventBus多個應用程序和容器堆
- 29. 在多個線程/進程之間共享stdout
- 30. 在同一個過程中多線程共享什麼?
堆被所有線程共享 – TheLostMind
是的,它在所有線程之間共享https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html – user3159253