# US 2014/0192074 A1 · Memory management techniques

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

- Number: US 2014/0192074 A1
- Document ID: US20140192074A1
- Status: Published application
- Kind: A1
- Application number: 14/148,738
- Filed: 2014-01-07
- Published: 2014-07-10
- Earliest claimed: 2011-09-12
- Assignees: Microsoft Corporation
- Applicants: Microsoft Corporation
- Inventors: Steve Pronovost; Maxwell Abernethy; Rudolph Balaz; Ameet Chitre
- Web page: https://patentgrep.com/patent/US20140192074A1

## CPC

- G06F 12/023: {Free address space management}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- 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/0638: {Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module (address formation of the next microinstruction G06F9/26; masking faults in memories by using spares or by reconfiguring G11C29/70)}
- G06F 12/0891: using clearing, invalidating or resetting means
- G06T 1/60: Memory management
- G09G 5/001: {Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor}
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)

## Abstract

Memory management techniques that permit an executing process to store content in memory and later retrieve that content from the memory, but that also permit a memory manager to discard that content to address memory pressure. A process executing on a computing device may notify a memory manager of the computing device that first memory space allocated to the process contains first content that is available for discard. If the memory manager detects the computing device is experiencing memory pressure, the memory manager may address the memory pressure by selecting memory space available for discard and discarding the content of the memory space. Before a process reuses content made available for discard, the process may notify the memory manager of the intent to reuse and, in response, receive empty memory and an indication that the content was discarded or receive an indication that the content is still available for use.

## Claims

### Claim at position 1

1-20. (canceled)

### Claim 21

At least one computer-readable memory having computer-executable instructions stored therein, the computer-executable instructions for causing at least one processor of a computing device to execute a method of managing memory allocated to a process executing on the computing device, the method comprising:
notifying a memory manager of the computing device that first memory space allocated to the process contains first content available for discard; and
subsequently notifying the memory manager that the process will use the first content of the first memory space.

### Claim 22 (depends on 21)

The at least one computer-readable memory of claim 21, wherein the method further comprises:
in response to the subsequently notifying that the process will use the first content, receiving an indication from the memory manager of whether the first content was discarded.

### Claim 23 (depends on 22)

The at least one computer-readable memory of claim 22, wherein the method further comprises:
in response to receipt of an indication from the memory manager that indicates that the first content was discarded:
regenerating the first content; and
storing the regenerated first content in the first memory space.

### Claim 24 (depends on 21)

The at least one computer-readable memory of claim 21, wherein notifying the memory manager that the first content is available for discard comprises:
notifying the memory manager of a priority level for the first content that is available for discard.

### Claim 25 (depends on 21)

The at least one computer-readable memory of claim 21, wherein notifying the memory manager that the first content is available for discard comprises:
notifying the memory manager that memory space in video memory contains graphics data available for discard.

### Claim 26 (depends on 25)

The at least one computer-readable memory of claim 25, wherein the method further comprises:
requesting that a first amount of memory space in the video memory be allocated to the process for use as a staging buffer for graphics operations of the process, and wherein:
notifying the memory manager that the first content is available for discard comprises notifying the memory manager that the staging buffer contains content available for discard.

### Claim 27 (depends on 21)

The at least one computer-readable memory of claim 21, wherein notifying the memory manager that the first content is available for discard comprises:
notifying the memory manager that memory space in system memory contains data available for discard.

### Claim 28 (depends on 21)

The at least one computer-readable memory of claim 21, wherein the method further comprises:
prior to notifying the memory manager that the first content is available for discard:
requesting that the first memory space be allocated to the process;
generating the first content and storing the first content in the first memory space; and
using the first content.

### Claim 29

A computing device having instructions stored therein for performing operations that manage memory allocated to one or more processes executing on the computing device, the operations comprising:
maintaining a record of allocated memory space for which contents of the allocated memory space are not required to be preserved, the maintenance of the record including:
removing an identifier of a first memory space from the record in response to a request from a first process to use content of the first memory space;
detecting that the computing device is experiencing memory pressure;
selecting, based on the record, a second memory space for which the content is not required to be preserved; and
ceasing to preserve content of the second memory space.

### Claim 30 (depends on 29)

The computing device of claim 29, wherein maintaining the record of allocated memory for which the contents are not required to be preserved further includes:
prior to the request adding the first memory space to the record in response to a notification from the first process, to which the first memory space is allocated, that the content of the first memory space is available for discard

### Claim 31 (depends on 29)

The computing device of claim 29, further comprising:
receiving a notification from the first process, to which the first memory space is allocated, that the first memory space contains content that is not required to be preserved; and
following receiving the notification, maintaining a memory allocation of the first process.

### Claim 32 (depends on 31)

The computing device of claim 31, wherein maintaining the memory allocation of the first process comprises, following ceasing to preserve the content of the second memory space, continuing to allocate the second memory space to the first process.

### Claim 33 (depends on 29)

The computing device of claim 29, wherein detecting that the computing device is experiencing memory pressure comprises determining that a main memory of the computing device contains more than a threshold amount of content.

### Claim 34 (depends on 29)

The computing device of claim 29, wherein detecting that the computing device is experiencing memory pressure comprises determining that the computing device is to undergo a power state transition.

### Claim 35 (depends on 29)

The computing device of claim 29, wherein selecting the second memory space based on the record comprises selecting the second memory space from among the allocated memory space for which the contents are not required to be preserved based at least in part on a time that memory was added to the record.

### Claim 36 (depends on 29)

The computing device of claim 29, wherein selecting the second memory space based on the record comprises selecting the second memory space from among the allocated memory space for which the contents are not required to be preserved based at least in part on a priority level of the content set by the first process to which the second memory space is allocated.

### Claim 37

A computing device, comprising:
at least memory device; and
at least one processor, wherein the at least one memory device and the at least one processor respectively store and execute instructions, including instructions that cause the at least one processor to manage memory allocated to one or more processes executing on the computing device, the management of the memory comprising:
receiving from a first process to which first memory is allocated an indication that the first memory contains first content that is available for discard;
subsequently receiving from the first process a request to use the first content of the first memory that was indicated to be available for discard;
determining whether the content of the first memory was discarded; and
based on a result of the determining, responding to the request with a notification that the first content is available for use or that the first content was discarded.

### Claim 38 (depends on 37)

The computing device of claim 37, wherein receiving the indication that the first memory contains first content available for discard comprises receiving a priority level of the first content available for discard.

### Claim 39 (depends on 37)

The computing device of claim 37, wherein the management of the memory further comprises:
in response to receiving the indication from the first process, adding the first memory to a record of allocated memory that contains content available for discard; and
in response to subsequently receiving the request to use the first content, removing the first memory from the record.

### Claim 40 (depends on 37)

The computing device of claim 37, wherein receiving the indication from the first process comprises receiving, from a graphics driver, an indication that data regarding a graphic, which is stored in video memory of the computing device, is available for discard.
