# 1 楼答案 ... does each thread in a multi-threaded environment creates their own heap and has the same size? 不是。Java进程中的所有线程都共享一个堆 可以使用TLAB(线程本地分配缓冲区)运行JVM,以减少多线程应用程序中与分配相关的争用。然而,这些只是具有Java堆的Eden空间的区域。不是分开堆。此外,GC将根据需要将对象移动到其他位置 参考资料: https://blogs.oracle.com/jonthecollector/entry/the_real_thing http://robsjava.blogspot.com.au/2013/03/what-are-thread-local-allocation-buffers.html
# 2 楼答案 同一进程的线程共享相同的虚拟内存和堆 实际上,内存管理器可以维护专用于每个线程的本地内存池。它试图平衡池。这是作为优化在“幕后”完成的,对您来说是不可见的,因此线程使用分配给进程的整个堆
# 1 楼答案
不是。Java进程中的所有线程都共享一个堆
可以使用TLAB(线程本地分配缓冲区)运行JVM,以减少多线程应用程序中与分配相关的争用。然而,这些只是具有Java堆的Eden空间的区域。不是分开堆。此外,GC将根据需要将对象移动到其他位置
参考资料:
# 2 楼答案
同一进程的线程共享相同的虚拟内存和堆
实际上,内存管理器可以维护专用于每个线程的本地内存池。它试图平衡池。这是作为优化在“幕后”完成的,对您来说是不可见的,因此线程使用分配给进程的整个堆