会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
热词
    • 43. 发明授权
    • Garbage-first garbage collection
    • 垃圾第一垃圾收集
    • US07340494B1
    • 2008-03-04
    • US10985447
    • 2004-11-11
    • David L. DetlefsSteven K. HellerAlexander T. Garthwaite
    • David L. DetlefsSteven K. HellerAlexander T. Garthwaite
    • G06F17/30
    • G06F12/0269Y10S707/99957
    • A garbage collector treats a garbage-collected heap as divided into heap regions, for each of which it maintains a respective remembered set, whose entries list the locations where references located in the heap outside that region refer to references inside that region. The remembered sets are used during space-incremental collection operations on collection sets of those regions; if the garbage collector determines that objects in the collection set are not referred to directly or indirectly from outside the collection set, it reclaims the memory space that they occupy. It places entries into the remembered sets independently of the locations at which the references were found, so any region can be chosen for inclusion in any collection set; no predetermined collection order is required. Instead, the garbage collector performs global marking operations and uses the results to select for collection-set membership the regions that it can most likely collect efficiently.
    • 一个垃圾收集器将垃圾收集堆处理成堆区域,每个堆区域维护一个相应的记忆集,其中的条目列出了位于该区域外部的堆栈中的引用引用该区域内的引用的位置。 记忆集合用于在这些区域的集合集合的空间增量集合操作中; 如果垃圾收集器确定集合集中的对象不是从集合集外部直接或间接引用,则它回收它们占用的内存空间。 它将条目放入独立于找到引用位置的记忆集中,因此可以选择任何区域以包含在任何集合集合中; 不需要预定的收款单。 相反,垃圾回收器执行全局标记操作,并使用结果为收集集成员选择最有可能高效收集的区域。
    • 44. 发明授权
    • Exploiting popular objects to reduce mutator overhead
    • 利用流行的对象来减少突变体开销
    • US07302515B1
    • 2007-11-27
    • US10986527
    • 2004-11-11
    • David L. Detlefs
    • David L. Detlefs
    • G06F12/00G06F21/00G06F17/30G06F9/45
    • G06F12/0276G06F12/0269Y10S707/99953Y10S707/99957
    • A garbage collector that reclaims memory for a mutator does so space-incrementally, employing remembered sets associated with respective heap regions to keep track of where the mutator has notified it of writing references into the associated regions. The collector reserves some heap regions for objects that it has found to be “popular,” i.e., to which it has observed a large number of references. When the mutator writes such a reference, it refrains from making the kind of notification to which the garbage collector would otherwise respond by updating a remembered set. Although this deprives the garbage collector of the ability to maintain complete remembered sets for popular-object regions, those regions usually have no unreachable objects or very few, so the collector can dispense with collecting them or can collect them less frequently, in a way that does not rely on remembered sets.
    • 回收用于增变器的存储器的垃圾收集器以空间递增的方式执行,使用与相应堆区域相关联的记忆集来跟踪变异器在哪里通知将参考写入相关联的区域。 收集者为某些被发现是“受欢迎”的物体保留一些堆区,即已经观察到大量参考文献。 当mutator写入这样的引用时,它不会阻止垃圾回收器通过更新一个记忆集来响应这种通知。 尽管这样做剥夺了垃圾收集器维护流行对象区域的完整记忆集的能力,但这些区域通常没有无法访问的对象或很少的对象,所以收集器可以省去收集它们,或者可以不频繁地收集它们, 不依赖记忆集。
    • 45. 发明授权
    • Preemptive memory-block splitting
    • 抢占式内存块分裂
    • US06842838B2
    • 2005-01-11
    • US10103637
    • 2002-03-21
    • Steven K. HellerDavid L. DetlefsRoss C. Knippel
    • Steven K. HellerDavid L. DetlefsRoss C. Knippel
    • G06F12/00G06F12/02G06F13/00
    • G06F12/023G06F12/0253Y10S707/99953Y10S707/99957
    • A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future-demand values for memory blocks of those sizes. It then splits larger blocks into smaller ones preemptively, i.e., before a request for the result of the splitting. To split a relatively large block preemptively in order to meet an expected request for a smaller block, it bases its selection of the larger block to be split on whether the supply of free blocks of that size is great enough to meet the expected demand for such blocks. It also splits blocks reactively, i.e., in response to a previously made request for a block that will result from the splitting operation.
    • 计算机系统(10)实现采用数据结构(图3)的存储器分配器来维护可用于接收新数据的动态分配的存储器的库存。 它从一个或多个程序接收从动态可分配的内存“堆”分配内存的请求。 它通过执行所请求的分配并从库存中移除如此分配的存储器块来响应这些请求。 相反,它增加了支持的程序或程序请求被释放的库存记忆块。 在此过程中,它监视分配了各种大小的存储块的频率,并从那些频率的那些频率预测这些尺寸的存储块的未来需求值。 然后,它将较大的块分成较小的块,即在对分裂结果的请求之前。 为了满足对较小块的预期请求,要先分割一个相对较大的块,它将选择较大的块来分割该大小的空闲块的供应是否足够大以满足对其的预期需求 块。 它还反应地拆分块,即响应于先前对由分割操作产生的块的请求。
    • 46. 发明授权
    • Memory-block coalescing based on run-time demand monitoring
    • 基于运行时需求监控的内存块聚合
    • US06839822B2
    • 2005-01-04
    • US10055414
    • 2001-10-29
    • Ross C. KnippelSteven K. HellerDavid L. Detlefs
    • Ross C. KnippelSteven K. HellerDavid L. Detlefs
    • G06F12/02G06F12/00G06F13/00
    • G06F12/023Y10S707/99953Y10S707/99956
    • A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of different sizes are allocated, and it projects from those frequencies future demand for different-sized memory blocks. When it needs to coalesce multiple smaller blocks to fulfil an actual or expected request for a larger block, it bases its selection of which constituent blocks to coalesce on whether enough free blocks of a constituent block's size exist to meet the projected demand for them.
    • 计算机系统(10)实现采用数据结构(图3)的存储器分配器来维护可用于接收新数据的动态分配的存储器的库存。 它从一个或多个程序接收从动态可分配的内存“堆”分配内存的请求。 它通过执行所请求的分配并从库存中移除如此分配的存储器块来响应这些请求。 相反,它增加了支持的程序或程序请求被释放的库存记忆块。 在此过程中,它监视分配不同大小的存储块的频率,并从那些频率预测未来对不同大小的存储块的需求。 当需要合并多个较小的块以实现对较大块的实际或预期请求时,它将选择哪个组成块合并,以确定是否存在构成块的大小的足够的空闲块以满足对它们的预计需求。
    • 47. 发明授权
    • Work-stealing queues for parallel garbage collection
    • 并行垃圾收集工作窃取队列
    • US06823351B1
    • 2004-11-23
    • US09697729
    • 2000-10-26
    • Christine H. FloodDavid L. DetlefsNir N. ShavitXiaolan ZhangOle Agesen
    • Christine H. FloodDavid L. DetlefsNir N. ShavitXiaolan ZhangOle Agesen
    • G06F1730
    • G06F12/0276Y10S707/99953Y10S707/99957
    • A multiprocessor, multi-program, stop-the-world garbage collection program is described. The system initially over partitions the root sources, and then iteratively employs static and dynamic work balancing. Garbage collection threads compete dynamically for the initial partitions. Work stealing double-ended queues, where contention is reduced, are described to provide dynamic load balancing among the threads. Contention is resolved by using atomic instructions. The heap is broken into a young and an old generation where parallel semi-space copying is used to collect the young generation and parallel mark-compacting the old generation. Speed and efficiency of collection is enhanced by use of card tables and linking objects, and overflow conditions are efficiently handled by linking using class pointers. A garbage collection termination employs a global status word.
    • 描述了一个多处理器,多程序,停止世界的垃圾收集程序。 系统最初对根源进行分区,然后迭代地采用静态和动态的工作平衡。 垃圾收集线程可以动态竞争初始分区。 被描述为在线程之间提供动态负载平衡的工作窃取双端队列,其中争用减少。 竞争通过使用原子指令来解决。 堆被打破成一个年轻和老一代,平行的半空间复制用于收集年轻一代和平行的标记压实老一代。 通过使用卡表和链接对象来增强收集的速度和效率,并且通过使用类指针进行链接来有效地处理溢出条件。 垃圾收集终端采用全局状态字。
    • 48. 发明授权
    • Striding-type generation scanning for parallel garbage collection
    • 并行垃圾收集的跨式生成扫描
    • US06526422B1
    • 2003-02-25
    • US09702485
    • 2000-10-31
    • Christine H. FloodDavid L. Detlefs
    • Christine H. FloodDavid L. Detlefs
    • G06F1730
    • G06F12/0269G06F12/0276Y10S707/99931Y10S707/99953Y10S707/99957
    • A multiprocessor, multi-program, stop-the-world garbage collection program is described. The system initially over partitions the root sources, and then iteratively employs static and dynamic work balancing. Garbage collection threads compete dynamically for the initial partitions. Work stealing double-ended queues, where contention is reduced, are described to provide dynamic load balancing among the threads. Contention is resolved by using atomic instructions. The heap is broken into a young and an old generation where parallel semi-space copying is used to collect the young generation and parallel mark-compacting the old generation. The old generation heap is divided into a number of contiguous cards that are partitioned into subsets. The cards are arranged into the subsets so that non-contiguous cards are contained in each subset. Speed and efficiency of collection is enhanced by use of card tables and linking objects, and overflow conditions are efficiently handled by linking using class pointers. The garbage collection termination employs a global status word.
    • 描述了一个多处理器,多程序,停止世界的垃圾收集程序。 系统最初对根源进行分区,然后迭代地采用静态和动态的工作平衡。 垃圾收集线程可以动态竞争初始分区。 被描述为在线程之间提供动态负载平衡的工作窃取双端队列,其中争用减少。 竞争通过使用原子指令来解决。 堆被打破成一个年轻和老一代,平行的半空间复制用于收集年轻一代和平行的标记压实老一代。 旧的一代堆被划分成若干连续的卡片,被划分成子集。 这些卡被布置成子集,使得不连续的卡被包含在每个子集中。 通过使用卡表和链接对象来增强收集的速度和效率,并且通过使用类指针进行链接来有效地处理溢出条件。 垃圾回收终止使用全局状态字。
    • 49. 发明授权
    • Expedited object locking and unlocking
    • 快速对象锁定和解锁
    • US06314563B1
    • 2001-11-06
    • US09283136
    • 1999-03-31
    • Ole AgesenDavid L. DetlefsAlex Garthwaite
    • Ole AgesenDavid L. DetlefsAlex Garthwaite
    • G06F965
    • G06F9/52Y10S707/99938
    • An object structure's header (40) allocates a two-bit synchronization-state field (42) solely to monitor data for implementing synchronization on that object. When the object is locked by a particular execution thread, or when one or more execution threads are waiting for a lock or notification on that object, its header contains a pointer to monitor resources in the form of a linked list of lock records (50, 52, 54) associated with the threads involved. The synchronization-state field (42) ordinarily contains an indication of whether such a linked list exists and, if so, whether its first member is associated with a thread that has a lock on the object. When a thread attempts to gain access to that linked list, it employs an atomic swap operation to place a special busy value in that lock-state field (42) and write its execution-environment pointer into the object's header (40). If the previous value of that field was not the special busy value, the thread uses the header's previous contents to perform its intended synchronization operation. Otherwise, it obtains that information through its own execution environment (44, 46, or 48) or that of the thread whose identifier the object header previously contained. When the thread completes its synchronization operation, it employs an atomic compare-and-swap operation to write the results into the object's header if that header still contains the thread identifier that the thread originally wrote there. Otherwise, it communicates that information to its successor thread if the thread identifier is different and thereby indicates that at least one successor is contending for access to the linked list.
    • 对象结构的头部(40)仅分配两位同步状态字段(42)来监视用于实现该对象上的同步的数据。 当对象被特定执行线程锁定时,或者当一个或多个执行线程等待该对象上的锁定或通知时,其头包含指向监视资源的指针,该指针以锁定记录的链表的形式(50, 52,54)与所涉及的线程相关联。 同步状态字段(42)通常包含这样的链表是否存在的指示,如果是,则其第一个成员是否与对象上具有锁定的线程相关联。 当一个线程尝试访问该链表时,它采用原子交换操作在该锁状态字段(42)中放置一个特殊的忙值,并将其执行环境指针写入对象的头(40)。 如果该字段的先前值不是特殊忙值,线程将使用头部的以前内容来执行其预期的同步操作。 否则,它通过其自己的执行环境(44,46或48)或其标识符之前包含对象标题的线程获得该信息。 当线程完成其同步操作时,如果该头仍然包含线程最初在那里写入的线程标识符,它将使用原子比较和交换操作将结果写入对象的头。 否则,如果线程标识符不同,则将该信息传递给其后续线程,从而指示至少一个后继者正在竞争访问链表。
    • 50. 发明授权
    • Busy-wait-free synchronization
    • 忙等待同步
    • US06173442B2
    • 2001-01-09
    • US09245778
    • 1999-02-05
    • Ole AgesenDavid L. DetlefsAlex GarthwaiteRoss C. KnippelY. Srinivas RamakrishnaDerek White
    • Ole AgesenDavid L. DetlefsAlex GarthwaiteRoss C. KnippelY. Srinivas RamakrishnaDerek White
    • G06F945
    • G06F9/52Y10S707/99938
    • An object structure's header (40) allocates a two-bit synchronization-state field (42) solely to monitor data for implementing synchronization on that object. When the object is locked by a particular execution thread, or when one or more execution threads are waiting for a lock or notification on that object, its header contains a pointer to monitor resources in the form of a linked list of lock records (50, 52, 54) associated with the threads involved. The synchronization-state field (42) ordinarily contains an indication of whether such a linked list exists and, if so, whether its first member is associated with a thread that has a lock on the object. When a thread attempts to gain access to that linked list, it employs an atomic swap operation to place a special busy value in that lock-state field (42) and write its execution-environment pointer into the object's header (40). If the previous value of that field was not the special busy value, the thread uses the header's previous contents to perform its intended synchronization operation. Otherwise, it obtains that information through its own execution environment (44, 46, or 48) or that of the thread whose identifier the object header previously contained. When the thread completes its synchronization operation, it employs an atomic compare-and-swap operation to write the results into the object's header if that header still contains the thread identifier that the thread originally wrote there. Otherwise, it communicates that information to its successor thread if the thread identifier is different and thereby indicates that at least one successor is contending for access to the linked list.
    • 对象结构的头部(40)仅分配两位同步状态字段(42)来监视用于实现该对象上的同步的数据。 当对象被特定执行线程锁定时,或者当一个或多个执行线程等待该对象上的锁定或通知时,其头包含指向监视资源的指针,该指针以锁定记录的链表的形式(50, 52,54)与所涉及的线程相关联。 同步状态字段(42)通常包含这样的链表是否存在的指示,如果是,则其第一个成员是否与对象上具有锁定的线程相关联。 当一个线程尝试访问该链表时,它采用原子交换操作在该锁状态字段(42)中放置一个特殊的忙值,并将其执行环境指针写入对象的头(40)。 如果该字段的先前值不是特殊忙值,线程将使用头部的以前内容来执行其预期的同步操作。 否则,它通过其自己的执行环境(44,46或48)或其标识符之前包含对象标题的线程获得该信息。 当线程完成其同步操作时,如果该头仍然包含线程最初在那里写入的线程标识符,它将使用原子比较和交换操作将结果写入对象的头。 否则,如果线程标识符不同,则将该信息传递给其后续线程,从而指示至少一个后继者正在竞争访问链表。