Thread-local heaps for Java

Thread-local heaps for Java
复制标题

Java 的线程本地堆

DOI:
10.1145/512429.512439
复制
发表时间:
2002
期刊:
Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
通讯作者:
D. Sheinwald
D. Sheinwald
中科院分区:
--
文献类型:
--
作者:
T. Domani;Gal Goldshtein;E. K. Kolodner;E. Lewis;E. Petrank;D. Sheinwald

文献摘要

被引文献

相似文献

我们为基于线程本地堆的Java提供了一种内存管理方案。假设大多数对象是由单个线程创建和使用的,则希望将存储器管理器摆脱线程 - 本地对象的冗余同步。因此,在我们的方案中,每个线程都会收到堆分配其对象的分区,并在其中进行本地垃圾收集,而无需与其他线程同步。我们动态监视以确定哪些对象是局部的,哪些是全局的。此外,我们建议使用分析来识别几乎完全分配全局对象的分配站点,并直接在全球区域中分配这些站点的对象。我们已经实施了线程 - 本地内存储器管理器和在IBM上直接分配的直接全局分配机制Windows的JDK 1.3.0的原型。我们对四向多处理器IBM Netfinity服务器上直接全局分配的线程堆堆的测量表明,总体垃圾收集时间已大大减少,并且大多数长时间停顿已被消除。
We present a memory management scheme for Java based on thread-local heaps. Assuming most objects are created and used by a single thread, it is desirable to free the memory manager from redundant synchronization for thread-local objects. Therefore, in our scheme each thread receives a partition of the heap in which it allocates its objects and in which it does local garbage collection without synchronization with other threads. We dynamically monitor to determine which objects are local and which are global. Furthermore, we suggest using profiling to identify allocation sites that almost exclusively allocate global objects, and allocate objects at these sites directly in a global area.We have implemented the thread-local heap memory manager and a preliminary mechanism for direct global allocation on an IBM prototype of JDK 1.3.0 for Windows. Our measurements of thread-local heaps with direct global allocation on a 4-way multiprocessor IBM Netfinity server show that the overall garbage collection times have been substantially reduced, and that most long pauses have been eliminated.