我想了解这一点,但是当我设置最大堆大小时,多线程环境中的每个线程是否创建自己的堆并具有相同的大小?堆被共享到多个线程吗?
0
A
回答
3
......多线程环境中的每个线程是否创建自己的堆并具有相同的大小?
不是。有一个堆由Java进程中的所有线程共享。
可以使用TLAB(线程本地分配缓冲区)运行JVM以减少多线程应用程序中与分配相关的争用。但是,这些只是具有Java堆的Eden空间的区域。不分离堆。此外,物体将根据需要由GC移动到其他地方。
参考文献:
同一进程共享的
2
线程相同的虚拟存储器和堆。
实际上,内存管理器可以维护专用于每个单独线程的本地内存池。它试图平衡泳池。这是作为优化完成的“底层”,它对你来说是不可见的,所以线程使用分配给进程的整个堆。
相关问题
- 1. 多个进程可以共享堆内存吗?
- 2. 线程共享堆栈位置?
- 3. 多线程 - 共享数据
- 4. 进程VS线程:两个进程可以共享相同的共享内存吗?可以两个线程?
- 5. 两个进程共享相同的堆
- 6. PageContext线程共享
- 7. C#与多线程共享锁
- 8. 多线程共享本地变量
- 9. C# - 多线程 - 共享数据
- 10. 共享列表上的多线程
- 11. 在多线程中共享数据 - 是非静态变量吗?
- 12. 共享对象和多线程问题。我应该在乎吗?
- 13. 在同一个过程中多线程共享什么?
- 14. AS3共享对象可以被多个应用程序访问吗?
- 15. 安全地共享一个结构在多个线程
- 16. 线程之间共享一个方法的局部变量吗?
- 17. 在两个线程之间共享QAxObject?
- 18. 共享列表线程
- 19. C#线程共享数据
- 20. 是线程池共享 - .net
- 21. Spring Boot共享线程
- 22. 烧瓶线程共享值
- 23. Python中的调用堆栈是在线程之间共享还是在多线程和多处理中的进程之间共享?
- 24. Java线程从共享堆栈阵列读取和写入
- 25. 在多个进程之间共享共享对象
- 26. 从线程共享一个时间戳到另一个
- 27. 多个线程之间的数据共享(班级)
- 28. 从多个线程同步方法调用共享对象
- 29. 正在更新从多个线程共享的列表int Java
- 30. Hadoop的Mapper对象是否跨多个线程共享?
堆被所有线程共享 – TheLostMind
是的,它在所有线程之间共享https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html – user3159253