Method of replication-based garbage collection in a multiprocessor system
    2.
    发明公开
    Method of replication-based garbage collection in a multiprocessor system 失效
    多维系统中的Verfahren zur replikationsbasierten Garbagesammlung

    公开(公告)号:EP0969377A1

    公开(公告)日:2000-01-05

    申请号:EP98480045.8

    申请日:1998-06-30

    IPC分类号: G06F12/02

    CPC分类号: G06F12/0269 Y10S707/99957

    摘要: Improved method of replication-based garbage collection in a multiprocessing system comprising a plurality of processors, a memory divided into a current area (from-space) used by the processors during current program execution and a reserved area (to-space), and at least a garbage collector for performing, when necessary, a garbage collection consisting in flipping the roles of the current area and reserved area after all the live objects stored in current area have been copied into the reserved area and for reclaiming the current area after the flipping operation. Several program threads (mutators) are currently running in parallel and the garbage collector performs the garbage collection in parallel with the program threads, the flipping operation being performed after the program threads have been stopped and the garbage collection has been completed. The method comprises the steps of storing, during normal program execution, a record in a local buffer allocated to each program thread each time this one updates a memory location, and adding this local buffer when full to a global list of buffers using a first wait-free synchronization operation, and, during garbage collection, removing the local buffers one by one from the global list of buffers using a second wait-free synchronization operation, and looping over records in each removed local buffer and copying the updated memory locations into the reserved area until the global list is empty.

    摘要翻译: 在多处理系统中改进的基于复制的垃圾收集方法,包括多个处理器,分配为当前程序执行期间由处理器使用的当前区域(从空间)的存储器和保留区域(空间)) 至少一个垃圾回收器,用于在必要时执行一个垃圾回收,该垃圾收集包括在存储在当前区域中的所有活动对象之后翻转当前区域和保留区域的角色,并且在翻转之后回收当前区域 操作。 几个程序线程(mutator)当前并行运行,垃圾收集器与程序线程并行执行垃圾收集,在程序线程停止并且垃圾收集完成后执行翻转操作。 该方法包括以下步骤:在正常程序执行期间,在每次更新存储器位置时,将分配给每个程序线程的本地缓冲器中的记录存储,并且使用第一等待将该本地缓冲器添加到全局缓冲器列表时 并且在垃圾收集期间,使用第二无等待同步操作从缓冲器的全局列表逐个地移除本地缓冲器,并且循环遍历每个移除的本地缓冲器中的记录并将更新的存储器位置复制到 保留区域,直到全局列表为空。