Mark-compact Patents (Class 707/817)
  • Patent number: 10387039
    Abstract: A method of managing a plurality of storage devices. The method comprises at a first device connected to the plurality of storage devices via a switch, receiving an indication of a plurality of logical disks, each logical disk being provided by a respective one of the plurality of storage devices. Each logical disk comprises a plurality of logical blocks. Data representing a virtual disk is generated, the virtual disk comprising a plurality of virtual blocks, each virtual block being provided by a logical block. Access is provided to the virtual disk to a second device different to the first device. A first virtual block is selected, the first virtual block being provided by a first logical block, and a re-mapping operation is performed after which the first virtual block is provided by a second logical block different to the first logical block.
    Type: Grant
    Filed: December 4, 2018
    Date of Patent: August 20, 2019
    Assignee: Micron Technology, Inc.
    Inventor: Marek Piekarski
  • Patent number: 10156990
    Abstract: A method of managing a plurality of storage devices. The method comprises at a first device connected to the plurality of storage devices via a switch, receiving an indication of a plurality of logical disks, each logical disk being provided by a respective one of the plurality of storage devices. Each logical disk comprises a plurality of logical blocks. Data representing a virtual disk is generated, the virtual disk comprising a plurality of virtual blocks, each virtual block being provided by a logical block. Access is provided to the virtual disk to a second device different to the first device. A first virtual block is selected, the first virtual block being provided by a first logical block, and a re-mapping operation is performed after which the first virtual block is provided by a second logical block different to the first logical block.
    Type: Grant
    Filed: January 17, 2018
    Date of Patent: December 18, 2018
    Assignee: Micron Technology, Inc.
    Inventor: Marek Piekarski
  • Patent number: 9882846
    Abstract: A virtual online meeting room is provided. An external message is received by an originator user from an outside source. The external message is displayed to an originator user and is prevented from being displayed to remainder users. The originator user is permitted to designate at least a portion of the external message as shared. At least one of the remainder users is permitted to have at least the portion of the external message displayed to them responsive to the at least the portion of the external message being designated as shared.
    Type: Grant
    Filed: July 17, 2017
    Date of Patent: January 30, 2018
    Assignee: Wrinkl, Inc.
    Inventors: Marc A. Cohen, Erik S. Katz, Jeffrey A. Cohen
  • Patent number: 9690491
    Abstract: A non-volatile memory system may have a group of non-volatile memory cells having a plurality of predetermined portions, where each predetermined portion is associated with an open host write block of a different host data type than each other predetermined portion. A host data router directs received data from a host to an appropriate predetermined portion based on a determined data type. A maintenance data router, based on predetermined minimum capacity overprovisioning targets for each predetermined portion, operates to adjust an amount of overprovisioning of physical capacity among the plurality of predetermined portions to reduce write amplification and increase performance in predetermined portions having data with a higher probability of host update. The method may include selecting a particular predetermined portion and a particular block within the selected predetermined portion on which to perform a maintenance operation to achieve the desired capacity overprovisioning.
    Type: Grant
    Filed: December 17, 2014
    Date of Patent: June 27, 2017
    Assignee: SanDisk Technologies LLC
    Inventor: Alan Welsh Sinclair
  • Patent number: 8935302
    Abstract: An apparatus, system, and method are disclosed for data block usage information synchronization for a non-volatile storage volume. The method includes referencing first data block usage information for data blocks of a non-volatile storage volume managed by a storage manager. The first data block usage information is maintained by the storage manager. The method also includes synchronizing second data block usage information managed by a storage controller with the first data block usage information maintained by the storage manager. The storage manager maintains the first data block usage information separate from second data block usage information managed by the storage controller.
    Type: Grant
    Filed: February 23, 2010
    Date of Patent: January 13, 2015
    Assignee: Intelligent Intellectual Property Holdings 2 LLC
    Inventors: David Flynn, David Atkisson, Drex Dixon, Jonathan Flynn, Brandon Hansen
  • Patent number: 8892610
    Abstract: A method to schedule garbage collection operations may be executed in a client/server system using multiple servers. The method includes comparing usage of memory in respective ones of the plurality of servers to one or more memory usage thresholds and dynamically identifying one or more servers in which to perform garbage collection of memory objects during a particular time period. By distributing the durations over which garbage collection is performed on respective servers, the client server system, among other things, reduces the pauses in servicing client requests.
    Type: Grant
    Filed: July 29, 2011
    Date of Patent: November 18, 2014
    Assignee: Google Inc.
    Inventor: Clement Ho Yan Pang
  • Patent number: 8769230
    Abstract: A method to implement parallel, single-pass compaction in a garbage collector is described. In one embodiment, such a method includes conducting a planning phase for multiple regions to be compacted. During the planning phase, the method determines new locations for data entities in the multiple regions. The method then performs a move phase for the multiple regions to move the data entities to their new locations. During the move phase, the method initiates multiple compaction threads to move the data entities to their new locations. While executing, the compaction threads dynamically build a dependency graph of the regions being compacted. The dependency graph guarantees that no data entity is moved to its new location until all data entities that it overwrites have been moved to their new locations. A corresponding computer program product and apparatus are also disclosed herein.
    Type: Grant
    Filed: March 28, 2012
    Date of Patent: July 1, 2014
    Assignee: International Business Machines Corporation
    Inventors: Peter Wiebe Burka, Jeffrey Michael Disher, Daryl James Maier, Aleksandar Micic, Ryan Andrew Sciampacone
  • Patent number: 8725982
    Abstract: Memory management includes identifying a region of virtual memory to be reclaimed, the region including an object that is currently located at an original virtual memory location, and the region being supported by at least a portion of a memory resource; relocating the object from the original virtual memory location to a target virtual memory location; releasing the portion of the memory resource so that the portion of memory resource can be reused; and after the portion of the memory resource is released, replacing a reference of the object that points to the original virtual memory location with a reference of the object that points to the target virtual memory location.
    Type: Grant
    Filed: April 25, 2013
    Date of Patent: May 13, 2014
    Assignee: Azul Systems, Inc.
    Inventors: Gil Tene, Michael A. Wolf
  • Patent number: 8694562
    Abstract: A generational garbage collector utilizes a pool-based heap to store objects dynamically generated at runtime. The pool-based heap is configured as a collection of pools where each pool stores objects associated with the same generation. Each pool contains a pool header that identifies the generation of all objects within the pool. The pools are aligned to a memory boundary that is a multiple of the pool size. Select bits of an object's memory address may be used to access the pool header so that an object's generation, which is needed in various phases of the garbage collection process, is readily determined.
    Type: Grant
    Filed: May 22, 2012
    Date of Patent: April 8, 2014
    Assignee: Microsoft Corporation
    Inventors: Abhinaba Basu, Jaiprakash Sharma
  • Patent number: 8677054
    Abstract: A method includes storing data in a non-volatile memory that includes multiple memory blocks. At least first and second regions are defined in the non-volatile memory. A definition is made of a first over-provisioning ratio between a first logical address space and a first physical memory space of the first region, and a second over-provisioning ratio, different from the first over-provisioning ratio, between a second logical address space and a second physical memory space of the second region. Portions of the data are compacted, individually within each of the first and second regions and independently of the other region, by copying the portions from one or more source memory blocks to one or more destination memory blocks using the first and second over-provisioning ratios, respectively.
    Type: Grant
    Filed: December 9, 2010
    Date of Patent: March 18, 2014
    Assignee: Apple Inc.
    Inventors: Avraham Meir, Oren Golov
  • Patent number: 8639730
    Abstract: A system and method for efficient garbage collection. A general-purpose central processing unit (CPU) sends a garbage collection request and a first log to a special processing unit (SPU). The first log includes an address and a data size of each allocated data object stored in a heap in memory corresponding to the CPU. The SPU has a single instruction multiple data (SIMD) parallel architecture and may be a graphics processing unit (GPU). The SPU efficiently performs operations of a garbage collection algorithm due to its architecture on a local representation of the data objects stored in the memory. The SPU records a list of changes it performs to remove dead data objects and compact live data objects. This list is subsequently sent to the CPU, which performs the included operations.
    Type: Grant
    Filed: September 24, 2012
    Date of Patent: January 28, 2014
    Assignee: Advanced Micro Devices, Inc.
    Inventors: Azeem S. Jiva, Gary R. Frost
  • Patent number: 8626804
    Abstract: This invention disclosed a system and method for resource based virtual communities. Any resources that can be shared or used by multiple people, including Internet resources, software or other resources can be the basis for the community, whose members are users of the resource. Web resources include web sites, web pages news groups or discussion forums. Other types of resources include software products, bulletin boards, games or other products. The community composes of the current resource users such as web page readers, bulletin board posters, game players, software users. Whenever a person accesses or uses the resource, the user is automatically joined as part of the community. At the same time they are using the resource, they can access all services provided by the community, such as talking with other members, collaborating with others, publishing comments, or even adding new community services.
    Type: Grant
    Filed: September 19, 2010
    Date of Patent: January 7, 2014
    Inventor: Yongyong Xu
  • Patent number: 8621171
    Abstract: An illustrative embodiment of a computer-implemented process for compaction planning selects a source region from a set of regions to form a selected source region, initializes process data using information from the selected source region and responsive to a determination that a current destination is not NULL and not full, determines whether to atomically consume from a destination. Responsive to a determination to atomically consume from a destination, the computer-implemented process plans to evacuate into a consumed extent and updates the process data and responsive to a determination that the source region is empty, determines whether more work remains. Responsive to a determination that more work does not remain, the computer-implemented process generates a relocation table.
    Type: Grant
    Filed: February 8, 2011
    Date of Patent: December 31, 2013
    Assignee: International Business Machines Corporation
    Inventors: Peter Wiebe Burka, Jeffrey Michael Disher, Daryl James Maier, Aleksandar Micic, Ryan Andrew Sciampacone
  • Patent number: 8612493
    Abstract: Tracking newly created objects during a garbage collection cycle includes marking newly allocated objects in the GC cycle during the allocation cache population phase. The goal is to take a high performance system for tracing live objects, such as the mark map, and combine the SATB with a cached allocation system for heap memory such that SATB representation is preserved. Embodiments combine both efficient support for an SATB model during a collection cycle and a highly optimized allocation path for heap objects in an allocation scheme (which may optionally be a size segregated class allocation scheme) that allows both mechanisms to co-exist effectively. Specifically, embodiments track newly created objects during a GC cycle such that they are kept alive during the trace phase while continuing to support a highly efficient allocating caching strategy.
    Type: Grant
    Filed: October 30, 2008
    Date of Patent: December 17, 2013
    Assignee: International Business Machines Corporation
    Inventors: Aleksandar Micic, Ryan A. Sciampacone
  • Patent number: 8527560
    Abstract: Aspects for conservative garbage collecting are disclosed. In one aspect, a heap of objects is generated during an execution of a script, and script objects in an unexecuted portion are traced to corresponding memory locations on the heap. The heap is then marked concurrently with executing the script such that a marked heap includes reachable and unreachable objects. Memory allocated to the unreachable objects is then freed concurrently with executing the script based on the marking. In another aspect, an object graph associated with a call stack is generated and traced such that script objects in an unexecuted portion of the stack are traced to corresponding memory locations on a heap. Heap objects are marked concurrently with executing the stack so that a marked heap includes reachable and unreachable objects. Memory allocated to the unreachable objects is then cleared concurrently with executing the stack based on the marked heap.
    Type: Grant
    Filed: March 29, 2011
    Date of Patent: September 3, 2013
    Assignee: Microsoft Corporation
    Inventors: Steven Lucco, Curtis Cheng-Cheng Man
  • Patent number: 8452938
    Abstract: Memory management includes identifying a region of virtual memory to be reclaimed, the region including at an object that is currently located at an original virtual memory location, and the region being supported by at least a portion of a memory resource; relocating the object from the original virtual memory location to a target virtual memory location; remapping one or more references to the object to the target virtual memory location; and releasing the portion of the memory resource prior to or contemporaneously with remapping the one or more references to the target location.
    Type: Grant
    Filed: April 8, 2008
    Date of Patent: May 28, 2013
    Assignee: Azul Systems, Inc.
    Inventors: Gil Tene, Michael A. Wolf
  • Patent number: 8392476
    Abstract: According to one embodiment, a semiconductor memory device performs writing of data to a semiconductor memory element in response to a request to write the data with a specified logical block address from a host and performs writing of valid data to the semiconductor memory element for compaction according to a log-structured method. The semiconductor memory device adjusts a frequency of the writing response to a request from the host and a frequency of the writing for compaction according to a predetermined ratio.
    Type: Grant
    Filed: September 20, 2010
    Date of Patent: March 5, 2013
    Assignee: Kabushiki Kaisha Toshiba
    Inventors: Shigehiro Asano, Kenichiro Yoshii, Kazuhiro Fukutomi, Shinichi Kanno
  • Patent number: 8327109
    Abstract: A system and method for efficient garbage collection. A general-purpose central processing unit (CPU) partitions an allocated heap according to a generational garbage collection technique. The generations are partitioned into fixed size cards. The CPU marks indications of qualified dirty cards during application execution since the last garbage collection. When the CPU detects a next garbage collection start condition is satisfied, the CPU sends a notification to a special processing unit (SPU) corresponding to a determination of one or more card root addresses, each card root address corresponding to one of said marked indications. The SPU has a single instruction multiple data (SIMD) parallel architecture and may be a graphics processing unit (GPU). The SPU may utilize the parallel architecture of its SIMD core to simultaneously compute multiple card root addresses. Following, the SPU sends these addresses to the CPU to be used in a garbage collection algorithm.
    Type: Grant
    Filed: March 2, 2010
    Date of Patent: December 4, 2012
    Assignee: Advanced Micro Devices, Inc.
    Inventor: Eric R Caspole
  • Patent number: 8316204
    Abstract: One embodiment of the present invention provides a system that uses versioned pointers to facilitate reusing memory without having to reclaim the objects solely through garbage collection. The system operates by first receiving a request to allocate an object. Next, the system obtains the object from a pool of free objects, and sets an allocated/free flag in the object to indicate that the object is allocated. The system also increments a version number in the object, and also encodes the version number into a pointer for the object. The system then returns the pointer, which includes the encoded version number. In this way, subsequent accesses to the object through the pointer can compare the version number encoded in the pointer with the version number in the object to determine whether the object has been reused since the pointer was generated.
    Type: Grant
    Filed: September 28, 2011
    Date of Patent: November 20, 2012
    Assignee: Oracle America, Inc.
    Inventor: David R. Chase
  • Patent number: 8301672
    Abstract: A system and method for efficient garbage collection. A general-purpose central processing unit (CPU) sends a garbage collection request and a first log to a special processing unit (SPU). The first log includes an address and a data size of each allocated data object stored in a heap in memory corresponding to the CPU. The SPU has a single instruction multiple data (SIMD) parallel architecture and may be a graphics processing unit (GPU). The SPU efficiently performs operations of a garbage collection algorithm due to its architecture on a local representation of the data objects stored in the memory. The SPU records a list of changes it performs to remove dead data objects and compact live data objects. This list is subsequently sent to the CPU, which performs the included operations.
    Type: Grant
    Filed: September 22, 2008
    Date of Patent: October 30, 2012
    Assignee: Advanced Micro Devices, Inc.
    Inventors: Azeem S. Jiva, Gary R. Frost
  • Patent number: 8296337
    Abstract: An apparatus, system, and method are disclosed for managing data with an empty data segment directive at the requesting device. The apparatus, system, and method include a token directive generation module and a token directive transmission module. The token directive generation module generates a storage request with a token directive. The token directive includes a request to store on the storage device a data segment token. The token directive substitutes for a series of repeated, identical characters or a series of repeated, identical character strings to be stored as a data segment. The token directive includes at least a data segment identifier and a data segment length. The data segment token and the token directive are substantially free from data of the data segment. The token directive transmission module transmits the token directive to the storage device.
    Type: Grant
    Filed: December 6, 2007
    Date of Patent: October 23, 2012
    Assignee: Fusion-io, Inc.
    Inventors: David Flynn, Jonathan Thatcher, Michael Zappe
  • Patent number: 8266190
    Abstract: Mechanisms of memory management in a real time runtime environment having a garbage collected memory heap are provided. The runtime environment includes a critical real time thread that is precluded from accessing the garbage collected memory heap. The runtime environment further includes a scoped memory area for the allocation of objects therein for access by the critical real time thread. The mechanisms determine whether the critical real time thread is in a defined state in which a delay associated with garbage collection can be accommodated by the critical thread. The mechanisms further initiate, in response to a determination that the critical real time thread is in the defined state, a process of garbage collection of the scoped memory area.
    Type: Grant
    Filed: September 23, 2008
    Date of Patent: September 11, 2012
    Assignee: International Business Machines Corporation
    Inventor: Andrew Johnson
  • Patent number: 8195721
    Abstract: In a virtual machine, Java Virtual Machine, or other runtime environment, a system and a method for improving the garbage collection times of the virtual machine memory. The JVM, or a garbage collector operating therein, can estimate, for an area of the memory space, the sum of the pause times for garbage collection of the software objects within the area, and control the garbage collection process so that the sum of the pause times for garbage collection will be lower than a target pause time limit, with a high degree of probability. A preselected compaction area can be pre-compacted to keep the compaction time within the target limit. The garbage collector can also predict the time required for final marking and repeat precleaning until the predicted final marking time is within the limits for pause times, and can improve pause times by redirecting application worker threads to do garbage collector work when entering or leaving the memory subsystem.
    Type: Grant
    Filed: May 3, 2011
    Date of Patent: June 5, 2012
    Assignee: Oracle International Corporation
    Inventors: David Lindholm, Mattias Joelson, Noora Peura
  • Patent number: 8176235
    Abstract: Enhanced write performance for non-volatile memories including a memory system that includes a receiver for receiving a data rate of a data sequence to be written to a non-volatile flash memory device. The memory system also includes a physical page selector for selecting a physical address of an invalid previously written memory page from a group of physical addresses of invalid previously written memory pages located on the non-volatile memory device, and for determining if the number of free bits in the invalid previously written memory page at the selected physical address is greater than or equal to the data rate. The memory system also includes a transmitter for outputting the selected physical address of the invalid previously written memory page, the outputting in response to the physical page selector determining that the number of free bits is greater than or equal to the data rate.
    Type: Grant
    Filed: December 4, 2009
    Date of Patent: May 8, 2012
    Assignee: International Business Machines Corporation
    Inventors: Michele M. Franceschini, Ashish Jagmohan, Luis A. Lastras-Montano, Mayank Sharma
  • Patent number: 8176234
    Abstract: Multi-write coding of non-volatile memories including a method that receives write data, and a write address of a memory page. The memory page is in either an erased state or a previously written state. If the memory page is in the erased state: selecting a first codeword from a code such that the first codeword encodes the write data and is consistent with a target set of distributions of electrical charge levels in the memory page; and writing the first codeword to the memory page. If the memory page is in the previously written state: selecting a coset from a linear code such that the coset encodes the write data and includes one or more words that are consistent with previously written content of the memory page; selecting a subsequent codeword from the one or more words in the coset; and writing the subsequent codeword to the memory page.
    Type: Grant
    Filed: December 4, 2009
    Date of Patent: May 8, 2012
    Assignee: International Business Machines Corporation
    Inventors: Michele M. Franceschini, Ashish Jagmohan, Luis A. Lastras-Montano
  • Patent number: 8051267
    Abstract: One embodiment of the present invention provides a system that uses versioned pointers to facilitate reusing memory without having to reclaim the objects solely through garbage collection. The system operates by first receiving a request to allocate an object. Next, the system obtains the object from a pool of free objects, and sets an allocated/free flag within the object to indicate that the object is allocated. The system also increments a version number within the object, and also encodes the version number into a pointer for the object. The system then returns the pointer, which includes the encoded version number. In this way, subsequent accesses to the object through the pointer can compare the version number encoded in the pointer with the version number within the object to determine whether the object has been reused since the pointer was generated.
    Type: Grant
    Filed: February 9, 2005
    Date of Patent: November 1, 2011
    Assignee: Oracle America, Inc.
    Inventor: David R. Chase
  • Publication number: 20110208791
    Abstract: In a virtual machine, Java Virtual Machine, or other runtime environment, a system and a method for improving the garbage collection times of the virtual machine memory. The JVM, or a garbage collector operating therein, can estimate, for an area of the memory space, the sum of the pause times for garbage collection of the software objects within the area, and control the garbage collection process so that the sum of the pause times for garbage collection will be lower than a target pause time limit, with a high degree of probability. A preselected compaction area can be pre-compacted to keep the compaction time within the target limit. The garbage collector can also predict the time required for final marking and repeat precleaning until the predicted final marking time is within the limits for pause times, and can improve pause times by redirecting application worker threads to do garbage collector work when entering or leaving the memory subsystem.
    Type: Application
    Filed: May 3, 2011
    Publication date: August 25, 2011
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: David Lindholm, Mattias Joelson, Noora Peura
  • Patent number: 8001125
    Abstract: One embodiment of the present invention provides a system that facilitates defining relationships between tags. During operation, the system receives a user-specified tag that describes a data item. Next, the system displays this tag to a user via a user interface that gives the user the option to suggest additional relationships for the tag. Based on user input, the system may define a relationships between the two tags, thereby facilitating the definition of a set of related tags for an organization.
    Type: Grant
    Filed: July 30, 2008
    Date of Patent: August 16, 2011
    Assignee: Intuit Inc.
    Inventors: Vladimir Magdalin, Marcus Tad Milbourn
  • Patent number: 7966607
    Abstract: One embodiment of the present invention provides a system that facilitates managing compiled program methods in a unified heap. The system partitions the unified heap into a first area and a second area. This allows the system to store objects other than compiled program methods and temporary compiler data structures in the first area, and to store compiled program methods and temporary compiler data structures in the second area.
    Type: Grant
    Filed: December 22, 2004
    Date of Patent: June 21, 2011
    Assignee: Oracle America, Inc.
    Inventors: Ioi K. Lam, Frank N. Yellin, Oleg A. Pliss
  • Patent number: 7953773
    Abstract: In a virtual machine, Java Virtual Machine, or other runtime environment, a system and a method for improving the garbage collection times of the virtual machine memory. The JVM, or a garbage collector operating therein, can estimate, for an area of the memory space, the sum of the pause times for garbage collection of the software objects within the area, and control the garbage collection process so that the sum of the pause times for garbage collection will be lower than a target pause time limit, with a high degree of probability. A preselected compaction area can be pre-compacted to keep the compaction time within the target limit. The garbage collector can also predict the time required for final marking and repeat precleaning until the predicted final marking time is within the limits for pause times, and can improve pause times by redirecting application worker threads to do garbage collector work when entering or leaving the memory subsystem.
    Type: Grant
    Filed: July 15, 2005
    Date of Patent: May 31, 2011
    Assignee: Oracle International Corporation
    Inventors: David Lindholm, Mattias Joelson, Noora Peura
  • Patent number: 7930325
    Abstract: A garbage collection algorithm that achieves hierarchical copy order with parallel garbage collection threads. More specifically, the present invention provides a garbage collection method and system for copying objects from a from-space to a to-space. The method comprises the steps of (a) having multiple threads that simultaneously perform work for garbage collection (GC), (b) examining the placement of objects on blocks, and (c) changing the placement of objects on blocks based on step (b). Preferably, the method includes the additional step of calculating a placement of object(s) based on step (b), and using the result of the calculation for step (c). For example, the calculation may be used to increase the frequency of intra-block pointers and/or to increase the frequency of siblings on the same block.
    Type: Grant
    Filed: May 29, 2008
    Date of Patent: April 19, 2011
    Assignee: International Business Machines Corporation
    Inventors: David K. Siegwart, Martin Hirzel
  • Patent number: 7882159
    Abstract: Associative references in a garbage collected programming environment is disclosed. An indication that an object is not reachable from any root object. The object is kept alive if it is determined by a garbage collection process, based at least in part on data other than data comprising the object or managed by an application with which the object is associated, that the object is associated with at least one other object that has been determined to be reachable.
    Type: Grant
    Filed: July 25, 2007
    Date of Patent: February 1, 2011
    Assignee: Apple Inc.
    Inventor: Patrick C. Beard
  • Patent number: 7882158
    Abstract: A system and method is provided for efficiently pinning references to the managed heap. The system and method allow for references to managed objects to be declared as pinned during a call to unmanaged code. The references are then reported as pinned to a garbage collector in response to invocation of a garbage collection service. The reference can be declared as pinned by a programmer within the source code or automatically invoked at run-time based on an unsafe condition. The garbage collection service will not move or relocate objects that are referenced by the active pinned local variables. If a garbage collection does not occur, the fact that the local variables are declared pinned is ignored.
    Type: Grant
    Filed: May 12, 2009
    Date of Patent: February 1, 2011
    Assignee: Microsoft Corporation
    Inventors: Patrick H. Dussud, Vance P. Morrison
  • Patent number: 7870170
    Abstract: An improved method, apparatus, and computer instructions for identifying a memory leak in a heap. Prior to the start of the observation period, all live objects in the heap are identified to form a set of live objects by altering an indicator in the live objects. After running the system for the required amount of time or until completion of the event being monitored, the system is used to obtain the list of live objects without the altered indicator. Live objects without the altered indicators form the most likely objects associated with a memory leak.
    Type: Grant
    Filed: May 3, 2005
    Date of Patent: January 11, 2011
    Assignee: International Business Machines Corporation
    Inventors: Phani Gopal V. Achanta, Robert Dimpsey, Frank Eliot Levine, Robert John Urquhart
  • Patent number: 7814130
    Abstract: A method, system, and program for efficient parallel bitwise sweeps of larger objects during garbage collection are provided. During a bitwise sweep, a helper thread scans a mark vector looking for a consecutive sequence of unmarked bits of a sufficient length following a marked bit. Once a consecutive sequence of unmarked bits of a sufficient length following a marked bit is detected, the helper thread fetches the size of a marked object corresponding to the marked bit. If the size of the marked object exceeds a size represented by the consecutive sequence of unmarked bits, the remainder of the bits representing the marked object are skipped, such that once a marked object is identified as potentially exceeding an object fetch threshold the helper thread efficiently skips the remainder of the bits represents the marked object and continues scanning for a number of consecutive zeroes indicating free space.
    Type: Grant
    Filed: March 19, 2008
    Date of Patent: October 12, 2010
    Assignee: International Business Machines Corporation
    Inventor: Geoffrey Owen Blandy
  • Patent number: 7792880
    Abstract: A garbage collection system that needs to meet real-time requirements breaks large objects that need to be moved into a series of arraylets. The arraylets are sized such that the amount of time required to move the arraylets is bounded by a predetermined amount. The arrays are preferably uniformly represented in the header for each array with a series of arraylet pointers that indicate the location of the arraylets. Control-flow graph splitting is used to eliminate multiple tests and allow common sub-expression elimination. Strip-mining can also be used to improve the efficiency of the process.
    Type: Grant
    Filed: January 5, 2004
    Date of Patent: September 7, 2010
    Assignee: International Business Machines Corporation
    Inventors: Matthew Arnold, David Francis Bacon, Perry Cheng, Vadakkedathu Thomas Rajan
  • Patent number: 7734667
    Abstract: A system and method is provided for reducing memory leaks in virtual machine programs, such as those encountered in programs running in the Java Virtual Machine (JVM) environment. A compiler, such as a Java Just-In-Time (JIT) compiler, is used to identify the last use of an variable and, subsequent to the program statement where the last use occurs, insert a nullification statement. The nullification statement nullifies the variable so that it no longer references an object stored in a garbage collected heap. Variables in a program are identified in the activation records of the program. The nullification statement, when executed, severs the link between the program and the objects stored in the garbage-collected heap so that the program is no longer seen as a “root” for the object, often enabling the garbage collector to reclaim memory occupied by the object sooner.
    Type: Grant
    Filed: November 12, 2007
    Date of Patent: June 8, 2010
    Assignee: International Business Machines Corporation
    Inventor: John M. Lake
  • Patent number: RE42396
    Abstract: A garbage collection method that distinguishes between local objects and managed objects, and between an ordinary pointer to an object, an owning pointer to an object, and a non-owning pointer to an object is presented. Ordinary pointers point only to local objects, and owning and non-owning pointers point only to managed objects. Managed objects have attributes including a count of the number of owning pointers referring to them, and a linked list of non-owning pointers referring to them. Managed objects only possess non-owning pointers. Only an invocation of a subroutine within a thread can possess an owning pointer. Using this method, when an invocation exits, its exit code gives up ownership of all objects it owned. When an object is no longer reachable from any owning pointer, either directly, or indirectly through non-owning pointers, the object is immediately de-allocated.
    Type: Grant
    Filed: November 23, 2005
    Date of Patent: May 24, 2011
    Assignee: Tangie Data Holdings LLC
    Inventor: Theodore S. Hills