IP Library Granted Patent US 10,114,740
Granted Patent B2
US 10,114,740 · App. 14/880,264 · Granted Oct 30, 2018

Memory management techniques

Inventors: Steve Pronovost (Woodinville, WA); Maxwell Abernethy (San Francisco, CA); Rudolph Balaz (Redwood, WA); Ameet Chitre (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F12/023G06F9/5016G06F9/5022G06F12/02G06F12/0638G06F12/0891G06T1/60G09G5/001G06F2212/1044G06F2212/657
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,114,740
App. No.
14/880,264
Granted
Oct 30, 2018
Kind
B2
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 (50)

1. A computing device, the computing device comprising:

at least one memory and at least one processor, the at least one memory and the at least one processor being respectively configured to store and execute instructions, including instructions for performing operations, the operations including:

allocating space in the at least one memory to a process executing on the computing device;

receiving an instruction from the process that:

data stored in at least a portion of the allocated space is to be discarded,

the data stored in at least the portion of the allocated space is to be retained, or

the data stored in at least the portion of the allocated space is available to be potentially discarded;

retaining or discarding the data based at least in part on the instruction and on memory usage for the computing device, wherein the instruction is based at least in part on whether the process is capable of regenerating the data.

2. The computing device of claim 1 , wherein the operations also include:

receiving the instruction that the data stored in at least the portion of the memory space is available to be potentially discarded;

subsequently receiving a request from the process for the data; and

providing the data to the process.

3. The computing device of claim 1 , wherein the operations also include:

receiving the instruction that the data stored in at least the portion of the memory space is available to be potentially discarded; and

receiving a notification of a priority level for the data stored in at least the portion of the allocated space that is available to be potentially discarded.

4. The computing device of claim 1 , wherein the operations also include:

receiving the instruction that the data stored in at least the portion of the memory space is available to be potentially discarded; and

retaining or discarding the data available to be potentially discarded based at least in part on whether the computing device is to undergo a power state transition.

5. The computing device of claim 1 , wherein:

the process is a graphics driver process; and

the data is a render target.

6. The computing device of claim 1 , wherein the instruction that the data stored in at least the portion of the allocated space is available to be potentially discarded is also an indication that the allocated space is to remain allocated to the process.

7. The computing device of claim 1 , wherein the instruction is based at least in part on a determination that the data will not be used within a threshold period of time.

8. A method of managing memory, the method comprising:

allocating space in at least one memory to a process executing on the computing device;

receiving an indication from the process that the data stored in at least the portion of the allocated space is available to be potentially discarded; and

managing the data available to be potentially discarded based at least in part on the indication and on memory usage for the computing device, wherein the indication is based at least in part on a determination that the data will not be used within a threshold period of time.

9. The method of claim 8 , further comprising:

after receiving the indication, receiving a request from the process for the data; and

providing the data to the process.

10. The method of claim 8 , further comprising:

receiving a notification of a priority level for the data stored in at least the portion of the allocated space that is available to be potentially discarded.

11. The method of claim 8 , wherein managing the data available to be potentially discarded includes:

retaining or discarding the data available to be potentially discarded based at least in part on whether the computing device is to undergo a power state transition.

12. The method of claim 8 , wherein:

the process is a graphics driver process; and

the data available to be potentially discarded is video data.

13. The method of claim 8 , wherein the indication that the data stored in at least the portion of the allocated space is available to be potentially discarded is also an indication that the allocated space is to remain allocated to the process.

14. The method of claim 8 , wherein the indication is based at least in part on a whether the process can regenerate the data.

15. 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 an indication that a first allocated memory space contains first content that is available for discard;

receiving an indication that a second allocated memory space contains second content that is available for discard;

subsequently receiving an indication of a shortage of memory space available for use by the computing device;

selecting, based at least in part on a determination that the data will not be used within a threshold period of time, from amongst the first content and the second content, which content is to be discarded; and

discarding the selecting content.

16. The computing device of claim 15 , wherein the selecting of which content is to be discarded is based at least in part on a time the first or second content was indicated as available for discard or an indicated priority level of the first or second content.

17. The computing device of claim 15 , wherein the management of the memory also includes receiving indications of priority levels for the first content and the second content, and wherein the selecting of which content is to be discarded is based at least in part the indicated priority level of the first content and on the indicated priority level of the second content.

18. The computing device of claim 15 , wherein discarding the selected content includes allowing the selected content to be overwritten.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2016
From: PRONOVOST, STEVE; ABERNETHY, MAXWELL; BALAZ, RUDOLPH; CHITRE, AMEET
To: MICROSOFT CORPORATION
Reel/Frame 037657/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2016
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 037657/0180 →
Continuity (4)
Continuation 14549501 · Nov 20, 2014
Continuation 14148738 · Jan 7, 2014
Continuation 13230109 · Sep 12, 2011
Related Publication 20160140035A1 · May 19, 2016