Relation-based ordering of objects in an object heap
AssigneeInternational Business Machines Corporation
InventorThomas Alan Gall
Life of this patent
Estimating the term…
Abstract
An apparatus, program product, and method organize data objects in an object heap based upon access relationships between the data objects (e.g., based upon temporal proximity and/or relative frequencies of access). By doing so, data objects that are accessed in close succession with one another are more likely to be located within the same page, and possibly within the same cache line, as one another. Consequently, when accessing such objects, the frequency of memory swapping within a multi-level memory architecture (e.g., within a particular cache memory, or within a virtual memory scheme, as appropriate for the particular architecture) is often reduced, resulting in an overall improvement in system performance.
Claims30
A method of managing data in a computer memory, the method comprising:
- (a) storing a plurality of data objects in an object heap, wherein the data objects are accessed responsive to a computer program;
- (b) determining during at least one of compilation and loading of the computer program that an access relationship exists between first and second data objects among the plurality of data objects;
- and
- (c) arranging the first and second data objects in the object heap during execution of the computer program based upon the access relationship therebetween to reduce a likelihood that memory swapping will be required when at least one of the first and second data objects is accessed.
A method of managing data in a computer memory, the method comprising:
- (a) storing a plurality of data objects in an object heap;
- and
- (b) arranging at least first and second data objects in the object heap based upon an access relationship therebetween to reduce a likelihood that memory swapping will be required when at least one of the first and second data objects is accessed;
- wherein the first and second data objects are among a plurality of data objects, and wherein arranging at least the first and second data objects in the object heap based upon the access relationship therebetween includes grouping a subset of data objects together into an object group in the object heap based upon an access relationship between each data object in the subset of data objects.
A method of managing data in a computer memory, the method comprising:
- (a) storing a plurality of data objects in an object heap;
- and
- (b) arranging at least first and second data objects in the object heap based upon an access relationship therebetween to reduce a likelihood that memory swapping will be required when at least one of the first and second data objects is accessed;
- wherein storing the plurality of data objects in the object heap includes allocating space in the object heap for each data object, and wherein the object heap is partitioned into From and To partitions, wherein storing the plurality of data objects in the object heap includes dynamically storing the first and second data objects in the From partition during execution of a computer program, and wherein arranging the first and second data objects in the object heap includes copying the first and second data objects from the From partition to the To partition in a predetermined order based upon the access relationship therebetween.
A method of managing data in a computer memory, the method comprising:
- (a) determining a relative frequency of access for each of a plurality of referenced data objects that are referenced by a referencing data object;
- and
- (b) arranging the plurality of referenced data objects in an object heap based upon the relative frequencies of access therefor to reduce a likelihood that memory swapping will be required when a plurality of referenced data objects is accessed.
An apparatus, comprising:
- (a) a memory;
- (b) an object heap, resident in the memory, the object heap configured to store a plurality of data objects;
- and
- (c) a program, resident in the memory, the program configured to arrange at least first and second data objects in the object heap based upon an access relationship therebetween to reduce a likelihood that memory swapping will be required when at least one of the first and second data objects is accessed, wherein the program is further configured to determine that the access relationship exists between the first and second data objects by determining relative frequencies of access for the first and second data objects.
A program product, comprising:
- (a) a program configured to arrange at least first and second data objects from a plurality of objects stored in an object heap based upon an access relationship therebetween to reduce a likelihood that memory swapping will be required when at least one of the first and second data objects is accessed, wherein the program is configured to determine the access relationship by accessing profiled access information for a second program that accesses the first and second objects, wherein the profiled access information is generated prior to execution of the second program;
- and
- (b) a signal bearing media bearing the program.
Dependencies are inferred from the claim text.