Claims
- 1. For satisfying requests for dynamic allocation of blocks of a computer system's computer memory, a method that includes:
A) maintaining an inventory of memory blocks available for dynamic allocation; B) in response to release requests that specify respective memory blocks, adding those memory blocks to the inventory; C) performing splitting operations on memory blocks in the inventory and thereby producing split-result memory blocks; and D) satisfying some allocation requests by allocating such split-result memory blocks; wherein at least some of the splitting operations, called preemptive splitting operations, are performed on memory blocks that have been identified by release requests performed before receipt of any allocation request satisfied by allocating a split-result memory block produced thereby.
- 2. A method as defined in claim 1 wherein:
A) the method further includes:
i) for each of a plurality of size ranges, deriving a demand indicator; and ii) for at least some memory blocks in the inventory, making a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 3. A method as defined in claim 2 wherein the demand indicator derived for each such size range is derived therefor by monitoring run-time allocations of memory blocks whose sizes belong to that range.
- 4. A method as defined in claim 2 wherein:
A) the computer system includes a garbage collector that treats portions of the computer memory as young and old generations, initially allocates objects in the young generation, determines whether to promote such objects, and moves such objects into free memory blocks in the old generation when it has thereby determined to promote them; B) the inventory is an inventory of memory blocks available for dynamic allocation in the old generation; C) the demand indicator associated with each size range is derived from a young-object count kept of objects in that size range that the garbage collector has not yet determined to promote.
- 5. A method as defined in claim 1 wherein:
A) the method further includes applying, repeatedly in preemptive-splitting cycles, splitting criteria to free memory blocks throughout a cyclically processed memory portion of the computer memory; and B) the preemptive splitting operations are performed on the free memory blocks that meet the splitting criteria.
- 6. A method as defined in claim 5 wherein:
A) the computer system includes a garbage collector that collects the cyclically processed memory portion in garbage-collection cycles; and B) one said preemptive-splitting cycle occurs once each garbage-collection cycle such that each preemptive-splitting cycle is associated with a respective garbage-collection cycle.
- 7. A method as defined in claim 6 wherein:
A) the garbage collector performs marking and sweeping of the complete cyclically procedural memory portion during each garbage-collection cycle; and B) all of the marking and sweeping performed during a garbage-collection cycle occurs before the preemptive splitting that occurs in the preemptive-splitting cycle associated therewith.
- 8. A method as defined in claim 5 wherein:
A) the method further includes:
i) for each of a plurality of size ranges, deriving a demand indicator; and ii) for at least some memory blocks in the inventory, making a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in s the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 9. A storage medium containing instructions readable, by a computer system that makes allocation requests, to configure the computer system to operate as an allocator that:
A) maintains an inventory of memory blocks available for dynamic allocation; B) in response to release requests that specify respective memory blocks, adds those memory blocks to the inventory; C) performs splitting operations on memory blocks in the inventory and thereby produces split-result memory blocks; and D) satisfies some said allocation requests by allocating such split-result memory blocks; wherein at least some of the splitting operations, called preemptive splitting operations, are performed on memory blocks that have been identified by release requests performed before receipt of any allocation request satisfied by allocating a split-result memory block produced thereby.
- 10. A storage medium as defined in claim 9 wherein:
A) the allocator:
i) derives a demand indicator for each of a plurality of size ranges; and ii) for at least some memory blocks in the inventory, makes a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 11. A storage medium as defined in claim 10 wherein the demand indicator derived for each such size range is derived therefor by monitoring run-time allocations of memory blocks whose sizes belong to that range.
- 12. A storage medium as defined in claim 10 wherein:
A) the computer system includes a garbage collector that treats portions of the computer memory as young and old generations, initially allocates objects in the young generation, determines whether to promote such objects, and moves such objects into free memory blocks in the old generation when it has thereby determined to promote them; B) the inventory is an inventory of memory blocks available for dynamic allocation in the old generation; C) the demand indicator associated with each size range is derived from a young-object count kept of objects in that size range that the garbage collector has not yet determined to promote.
- 13. A storage medium as defined in claim 9 wherein:
A) the allocator further applies, repeatedly in preemptive-splitting cycles, splitting criteria to free memory blocks throughout a cyclically processed memory portion; and B) the preemptive splitting operations are performed on the free memory blocks that meet the splitting criteria.
- 14. A storage medium as defined in claim 13 wherein:
A) the computer system includes a garbage collector that collects the cyclically processed memory portion in garbage-collection cycles; and B) one said preemptive-splitting cycle occurs once each garbage-collection cycle such that each preemptive-splitting cycle is associated with a respective garbage-collection cycle.
- 15. A storage medium as defined in claim 14 wherein:
A) the garbage collector performs marking and sweeping of the complete cyclically processed memory portion during each garbage-collection cycle; and B) all of the marking and sweeping performed during a garbage-collection cycle occurs before the preemptive splitting that occurs in the preemptive-splitting cycle associated therewith.
- 16. A storage medium as defined in claim 13 wherein:
A) the allocator:
i) derives a demand indicator for each of a plurality of size ranges; and ii) for at least some memory blocks in the inventory, makes a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 17. A computer system that makes allocation requests, includes computer memory, and comprises:
A) memory locations, included in the computer memory, that contain instructions directing the computer system to maintain an inventory of memory blocks available for dynamic allocation; B) memory locations, included in the computer memory, that contain instructions directing the computer system to respond to release requests specifying respective memory blocks by adding those memory blocks to the inventory; C) memory locations, included in the computer memory, that contain instructions directing the computer system to perform splitting operations on memory blocks in the inventory and thereby produce split-result memory blocks; and D) memory locations, included in the computer memory, that contain instructions directing the computer system to satisfy some said allocation requests by allocating such split-result memory blocks; wherein at least some of the splitting operations, called preemptive splitting operations, are performed on memory blocks that have been identified by release requests performed before receipt of any allocation request satisfied by allocating a split-result memory block produced thereby.
- 18. A computer system as defined in claim 17 wherein:
A) the memory further includes memory locations that contain instructions directing the computer system to:
i) derive a demand indicator for each of a plurality of size ranges; and ii) for at least some memory blocks in the inventory, make a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 19. A computer system as defined in claim 18 wherein the demand indicator derived for each such size range is derived therefor by monitoring run-time allocations of memory blocks whose sizes belong to that range.
- 20. A computer system as defined in claim 18 wherein:
A) the computer system includes a garbage collector that treats portions of the computer memory as young and old generations, initially allocates objects in the young generation, determines whether to promote such objects, and moves such objects into free memory blocks in the old generation when it has thereby determined to promote them; B) the inventory is an inventory of memory blocks available for dynamic allocation in the old generation; C) the demand indicator associated with each size range is derived from a young-object count kept of objects in that size range that the garbage collector has not yet determined to promote.
- 21. A computer system as defined in claim 17 wherein:
A) the memory further include instructions that direct the computer system to apply, repeatedly in preemptive-splitting cycles, splitting criteria to free memory blocks throughout a cyclically processed memory portion of the computer memory; and B) the preemptive splitting operations are performed on the free memory blocks that meet the splitting criteria.
- 22. A computer system as defined in claim 21 wherein:
A) the memory contains instructions that direct the computer system to act as a garbage collector that collects the cyclically processed memory portion in garbage-collection cycles; and B) one said preemptive-splitting cycle occurs once each garbage-collection cycle such that each preemptive-splitting cycle is associated with a respective garbage-collection cycle.
- 23. A computer system as defined in claim 22 wherein:
A) the garbage collector performs marking and sweeping of the complete cyclically processed memory portion during each garbage-collection cycle; and B) all of the marking and sweeping performed during a garbage-collection cycle occurs before the preemptive splitting that occurs in the preemptive-splitting cycle associated therewith.
- 24. A computer system as defined in claim 21 wherein:
A) the memory further includes memory locations that contain instructions directing the computer system to:
i) derive a demand indicator for each of a plurality of size ranges; and ii) for at least some memory blocks in the inventory, make a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 25. A computer signal representing sequences of instructions that, when executed by a computer system that makes allocation requests and includes computer memory, cause it to operate as an allocator that:
A) maintains an inventory of memory blocks available for dynamic allocation; B) in response to release requests that specify respective memory blocks, adds those memory blocks to the inventory; C) performs splitting operations on memory blocks in the inventory and thereby produces split-result memory blocks; and D) satisfies some said allocation requests by allocating such split-result memory blocks; wherein at least some of the splitting operations, called preemptive splitting operations, are performed on memory blocks that have been identified by release requests performed before receipt of any allocation request satisfied by allocating a split-result memory block produced thereby.
- 26. A computer signal as defined in claim 25 wherein:
A) the allocator:
i) derives a demand indicator for each of a plurality of size ranges; and ii) for at least some memory blocks in the inventory, makes a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 27. A computer signal as defined in claim 26 wherein the demand indicator derived for each such size range is derived therefor by monitoring run-time allocations of memory blocks whose sizes belong to that range.
- 28. A computer signal as defined in claim 26 wherein:
A) the computer system includes a garbage collector that treats portions of the computer memory as young and old generations, initially allocates objects in the young generation, determines whether to promote such objects, and moves such objects into free memory blocks in the old generation when it has thereby determined to promote them; B) the inventory is an inventory of memory blocks available for dynamic allocation in the old generation; C) the demand indicator associated with each size range is derived from a young-object count kept of objects in that size range that the garbage collector has not yet determined to promote.
- 29. A computer signal as defined in claim 25 wherein:
A) the allocator further applies, repeatedly in preemptive-splitting cycles, splitting criteria to free memory blocks throughout a cyclically processed memory portion; and B) the preemptive splitting operations are performed on the free memory blocks that meet the splitting criteria.
- 30. A computer signal as defined in claim 29 wherein:
A) the computer system includes a garbage collector that collects the cyclically processed memory portion in garbage-collection cycles; and B) one said preemptive-splitting cycle occurs once each garbage-collection cycle such that each preemptive-splitting cycle is associated with a respective garbage-collection cycle.
- 31. A computer signal as defined in claim 30 wherein:
A) the garbage collector performs marking and sweeping of the complete cyclically processed memory portion during each garbage-collection cycle; and B) all of the marking and sweeping performed during a garbage-collection cycle occurs before the preemptive splitting that occurs in the preemptive-splitting cycle associated therewith.
- 32. A computer signal as defined in claim 29 wherein:
A) the allocator:
i) derives a demand indicator for each of a plurality of size ranges; and ii) for at least some memory blocks in the inventory, makes a splitting decision that depends on the value of at least one said demand indicator and the number of inventory memory blocks that are in the size range with which the demand indicator is associated; and B) at least some of the preemptive splitting operations are performed on such memory blocks only upon a positive outcome of the splitting decision made therefor.
- 33. A computer system that includes computer memory, makes allocation requests for dynamic allocation of blocks of a computer system's computer memory requests, and includes:
A) means for maintaining an inventory of memory blocks available for dynamic allocation; B) means for, in response to release requests that specify respective memory blocks, adding those memory blocks to the inventory; C) means for performing splitting operations on memory blocks in the inventory and thereby producing split-result memory blocks; and D) means for satisfying some allocation requests by allocating such split-result memory blocks; wherein at least some of the splitting operations, called preemptive splitting operations, are performed on memory blocks that have been identified by release requests performed before receipt of any allocation request satisfied by allocating a split-result memory block produced thereby.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] The present application is a continuation-in-part of commonly assigned copending U.S. patent application Ser. No. 10/058,194, which was filed on Oct. 29, 2001, by Steven K. Heller et al. for Preemptive Memory-Block Splitting and is hereby incorporated by reference.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
10058194 |
Oct 2001 |
US |
Child |
10103637 |
Mar 2002 |
US |