有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java堆是否共享给多个线程?

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


共 (2) 个答案

  1. # 1 楼答案

    ... does each thread in a multi-threaded environment creates their own heap and has the same size?

    不是。Java进程中的所有线程都共享一个堆

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

    参考资料:

  2. # 2 楼答案

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

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