# US 9,519,426 B2 · Intelligent computer memory management

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,519,426 B2
- Document ID: US9519426B2
- Status: Granted
- Kind: B2
- Application number: 14/924,813
- Filed: 2015-10-28
- Published: 2016-02-18
- Granted: 2016-12-13
- Earliest claimed: 2010-09-22
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Arun Iyengar
- Web page: https://patentgrep.com/patent/US9519426B2

## CPC

- G06F 12/0238: {Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0632: {by initialisation or re-initialisation of storage systems}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0673: {Single storage device}
- G06F 3/0683: {Plurality of storage devices}
- G06F 9/5016: {the resource being the memory}
- G06F 12/02: Addressing or allocation; Relocation (program address sequencing G06F9/00; arrangements for selecting an address in a digital store G11C8/00)
- G06F 12/023: {Free address space management}
- G06F 11/3037: {where the computing system component is a memory, e.g. virtual memory, cache (accessing, addressing or allocating within memory systems or architectures G06F12/00; checking stores for correct operation G11C29/00)}
- G06F 12/0871: Allocation or management of cache space
- G06F 2212/1016: Performance improvement
- G06F 2212/1041: Resource optimization
- G06F 2212/6042: Allocation of cache space to multiple users or processors
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A plurality of memory allocators are initialized within a computing system. At least a first memory allocator and a second memory allocator in the plurality of memory allocators are each customizable to efficiently handle a set of different memory request size distributions. The first memory allocator is configured to handle a first memory request size distribution. The second memory allocator is configured to handle a second memory request size distribution. The second memory request size distribution is different than the first memory request size distribution. At least the first memory allocator and the second memory allocator that have been configured are deployed within the computing system in support of at least one application. Deploying at least the first memory allocator and the second memory allocator within the computing system improves at least one of performance and memory utilization of the at least one application.

## Claims

### Claim 1

A method for managing computer memory, the method comprising:
initializing a plurality of memory allocators within a computing system, wherein at least a first memory allocator and a second memory allocator in the plurality of memory allocators are each customizable to efficiently handle a set of different memory request size distributions, wherein to efficiently handle memory request size distributions comprises special free lists tailored to store free blocks of a plurality of particular sizes of the memory request size distributions, the free blocks are allocated from the special free lists to handle memory requests;
customizing the first memory allocator to efficiently handle a first memory request size distribution determined by the computing system;
customizing the second memory allocator to efficiently handle a second memory request size distribution determined by the computing system, the second memory request size distribution being different than the first memory request size distribution; and
deploying at least the first memory allocator and the second memory allocator in support of at least one application, the deploying improving at least one of performance and memory utilization of the at least one application.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
storing a plurality of memory objects by at least one memory allocator in the plurality of memory allocators.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
determining that the plurality of memory objects that have been stored are no longer required; and
de-allocating, in response to the determining, memory corresponding to the memory allocator.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
backing up a main memory object in a persistent storage.

### Claim 5 (depends on 4)

The method of claim 4, wherein the backing up is performed after a value associated with the main memory object has changed.

### Claim 6 (depends on 4)

The method of claim 4, wherein the backing up is performed in response to determining that a version of the main memory object stored within the persistent storage has been obsolete for a time period exceeding a threshold.

### Claim 7 (depends on 4)

The method of claim 4, wherein the backing up is performed in response to a number of updates to the main memory object, since a most recent version of the main memory object was stored in the persistent storage, exceeding a threshold.

### Claim 8 (depends on 4)

The method of claim 4, wherein the persistent storage comprises one of a file system and database management system.

### Claim 9 (depends on 1)

The method of claim 1, wherein at least one memory allocator in the plurality of memory allocators utilizes at least one of:
a first fit memory management method;
a best fit management method;
a multiple free list fit I management method;
a multiple free list fit II management method;
a quick fit management method; and
a buddy system management method.
