繁体   English   中英

是否将堆共享到多个线程?

[英]Is heap being shared to multiple threads?

我想了解这一点,但是当我设置最大堆大小时,多线程环境中的每个线程会创建自己的堆并具有相同的大小吗?

...多线程环境中的每个线程是否创建自己的堆并具有相同的大小?

否。Java进程中的所有线程共享一个堆。

可以使用带有TLAB(线程本地分配缓冲区)的JVM来减少多线程应用程序中与分配相关的争用。 但是,这些只是具有Java堆的Eden空间的区域。 没有单独的堆。 此外,GC将根据需要将对象移动到其他位置。

参考文献:

相同进程的线程共享相同的虚拟内存和堆。

实际上,内存管理器可以维护专用于每个单独线程的本地内存池。 它试图平衡池。 这是作为“优化”在后台进行的,对您而言是不可见的,因此线程使用分配给进程的整个堆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM