# US 2014/0195766 A1 · Shared and managed memory unified access

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

- Number: US 2014/0195766 A1
- Document ID: US20140195766A1
- Status: Published application
- Kind: A1
- Application number: 13/734,788
- Filed: 2013-01-04
- Published: 2014-07-10
- Earliest claimed: 2013-01-04
- Assignees: Microsoft Corporation
- Applicants: Microsoft Corporation
- Inventors: Martin Taillefer
- Web page: https://patentgrep.com/patent/US20140195766A1

## CPC

- G06F 12/0253: {Garbage collection, i.e. reclamation of unreferenced memory}
- G06F 12/0261: {using reference counting}
- G06F 12/1416: {by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights (G06F12/1458 takes precedence)}
- G06F 12/12: Replacement control
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A managed memory in which multiple computing entities each have a corresponding entity-specific portion that is subject to garbage collection. An immutable buffer is located outside of managed memory. For a given computing entity, the corresponding managed memory portion contains entity-specific objects that can be accessed by a specific computing entity, but not by the other multiple computing entities. For one or more of the entity-specific managed memory portions, the portion also includes a reference to shared memory, such as an immutable buffer. The reference is structured to be ignored by the garbage collector, though the reference may appear just as a normal object in the managed memory portion. Thus, a unified memory access model is made possible in which the methods for a computing entity to access a regular object in managed memory is similar to how the computing entity accesses shared memory.

## Claims

### Claim 1

A system comprising:
a managed memory have a plurality of managed memory portions, each corresponding to a managed computing entity;
an immutable buffer located outside of the managed memory, wherein a particular managed memory portion of the plurality of managed memory portions includes one or more garbage collectable objects that are accessible to the corresponding particular managed computing entity, but not to the other computing entities, the particular managed memory portion also including one or more references to the immutable buffer; and
a garbage collection component configured to manage the one or more garbage collectable objects in the particular managed memory portion, but also configured to not perform any actions on the one or more references to the immutable buffer.

### Claim 2 (depends on 1)

The system in accordance with claim 1, wherein the managed memory is a managed heap.

### Claim 3 (depends on 1)

The system in accordance with claim 1, wherein the immutable buffer is protected from having its data changed during the lifetime of the immutable buffer.

### Claim 4 (depends on 3)

The system in accordance with claim 3, wherein the immutable buffer is protected from having its physical address changed during the lifetime of the immutable buffer.

### Claim 5 (depends on 1)

The system in accordance with claim 1, wherein the immutable buffer is protected from having its physical address changed during the lifetime of the immutable buffer.

### Claim 6 (depends on 1)

The system in accordance with claim 1, wherein at least one of the one or more references is an array element.

### Claim 7 (depends on 6)

The system in accordance with claim 6, wherein the array element includes an address of at least a portion of the immutable buffer.

### Claim 8 (depends on 1)

The system in accordance with claim 1, wherein at least one of the one or more references includes an address of at least a portion of the immutable buffer.

### Claim 9 (depends on 8)

The system in accordance with claim 8, wherein the garbage collector is configured to determine that the address falls outside of the managed memory.

### Claim 10 (depends on 9)

The system in accordance with claim 9, wherein when the garbage collector determines that the address falls outside of the managed memory, the garbage collector refrains from performing garbage collection on the at least one of the one or more references.

### Claim 11 (depends on 1)

The system in accordance with claim 1, wherein the particular managed memory portion is a first managed memory portion, and the particular computing entity is a first computing entity of the plurality of computing entities,
a second managed memory portion of the plurality of managed memory portions also includes one or more garbage collectable objects that are accessible to the corresponding second computing entity, but not to the other computing entities, the second managed memory portion also including one or more references to the immutable buffer.

### Claim 12 (depends on 11)

The system in accordance with claim 11, the garbage collection component further configured to manage the one or more garbage collectable objects in the second managed memory portion, but also configured to not perform any actions on the one or more references to the immutable buffer in the second managed memory portion.

### Claim 13

A method for performing garbage collection comprising:
an act of reviewing a particular managed memory portion corresponding to a particular computing entity, wherein managed memory includes a plurality of managed memory portions, each managed memory portion corresponding to a computing entity;
an act of encountering a plurality of objects when reviewing the particular managed memory portion including a reference to an immutable buffer that is outside of the managed memory;
when encountering the reference, an act of determining that the reference corresponds to an item outside of the managed memory; and
as a result of the act of determining, an act of refraining from performing garbage collection on the item corresponding to the reference.

### Claim 14 (depends on 13)

The method in accordance with claim 13, wherein the reference is an array element.

### Claim 15 (depends on 13)

The method in accordance with claim 13, wherein the item is at least a portion of an immutable buffer.

### Claim 16 (depends on 13)

The method in accordance with claim 13, wherein other managed memory portions of the managed memory also include a reference to the item outside of the managed memory.

### Claim 17 (depends on 13)

The method in accordance with claim 13, further comprising:
an act of performing garbage collection on objects that do not reference items outside of the managed memory portion.

### Claim 18

A method for a computing entity accessing memory, the method comprising:
an act of accessing a managed memory portion that includes a plurality of entity-specific objects that are specific to the computing entity, and that also includes a reference to an immutable buffer that is outside of managed memory that that is shared by a plurality of computing entities, wherein the entity-specific objects are subject to garbage collection by a garbage collector; and
an act of using the reference to access the immutable buffer, wherein the reference is structured so as not to be subject to garbage collection by the garbage collector.

### Claim 19 (depends on 18)

The method in accordance with claim 18, wherein the reference is an array element that lists an address that is outside of the managed memory portion.
