我想了解这一点,但是当我设置最大堆大小时,多线程环境中的每个线程是否创建自己的堆并具有相同的大小?堆被共享到多个线程吗?
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