IP Library Granted Patent US 7,278,005
Granted Patent B1
US 7,278,005 · App. 10/816,471 · Granted Oct 2, 2007

Cooperative memory management

Assignee: Azul Systems, Inc.
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 7,278,005
App. No.
10/816,471
Granted
Oct 2, 2007
Kind
B1
Abstract

A method for managing memory in some embodiments comprises maintaining a memory pool, and specifying an amount of memory required for allocation. In some embodiments, the method also comprises requesting a process to release memory into the memory pool. In some embodiments, the method also comprises allocating an amount of the memory pool to a process. In some embodiments, the method comprises maintaining a memory pool, receiving status information from a plurality of processes, and managing memory among the plurality of processes using the status information.

Claims (80)

1. A method for managing memory, comprising:

maintaining a memory pool that is shared by a plurality of processes, wherein the memory pool includes committed memory and uncommitted memory, and maintaining the memory pool includes:

assigning to each of the plurality of processes a corresponding amount of committed memory from the memory pool;

specifying a specified amount of memory in the memory pool for allocation for a memory-requesting process;

requesting a memory-releasing process to release a requested amount of memory in the memory pool;

wherein the memory-requesting process is not necessarily the same process as the memory-releasing process.

2. A method for managing memory as recited in claim 1 , wherein the memory-releasing process operates in a garbage-collected environment.

3. A method for managing memory as recited in claim 1 , wherein the memory-releasing process is a Java process.

4. A method for managing memory as recited in claim 1 , wherein the memory-releasing process is a Java program.

5. A method for managing memory as recited in claim 1 , wherein the memory pool includes reserved memory.

6. A method for managing memory as recited in claim 1 , wherein the memory pool includes memory owned by the plurality of processes.

7. A method for managing memory as recited in claim 1 , wherein the memory pool includes a plurality of subpools.

8. A method for managing memory as recited in claim 1 , further comprising determining that the specified amount of memory is required for allocation.

9. A method for managing memory as recited in claim 1 , further comprising receiving a memory request from the memory-requesting process for the specified amount of memory and determining that the specified amount of memory is required for allocation.

10. A method for managing memory as recited in claim 1 , further comprising monitoring a monitored process and determining that the monitored process requires additional memory.

11. A method for managing memory as recited in claim 1 , further comprising monitoring a monitored process and detecting a rate of garbage collection for the monitored process.

12. A method for managing memory as recited in claim 1 , further comprising selecting the memory-releasing process from a plurality of processes based on status information.

13. A method for managing memory as recited in claim 1 , wherein requesting the memory-releasing process to release a requested amount of memory in the memory pool includes making a request via a system call.

14. A method for managing memory as recited in claim 1 , wherein requesting the memory-releasing process to release a requested amount of memory in the memory pool includes making a request via an inter-process communication protocol.

15. A method for managing memory as recited in claim 1 , wherein the specified amount of memory is approximately equal to the requested amount of memory.

16. A method for managing memory as recited in claim 1 , wherein the requested amount of memory in the memory pool is freeable memory.

17. A method for managing memory as recited in claim 1 , further comprising refilling a subpool of the memory pool with the requested amount of memory released by the memory-releasing process.

18. A method for managing memory, comprising:

maintaining a memory pool that is shared by a plurality of processes, wherein the memory pool includes committed memory and uncommitted memory, and maintaining the memory pool includes:

assigning to each of the plurality of processes a corresponding amount of committed memory from the memory pool;

receiving status information from the plurality of processes; and

managing memory among the plurality of processes using the status information.

19. A method for managing memory as recited in claim 18 , wherein managing memory among the plurality of processes includes allocating memory to one of the plurality of processes.

20. A method for managing memory as recited in claim 18 , wherein managing memory among the plurality of processes includes requesting one of the plurality of processes to release memory.

21. A method for managing memory as recited in claim 18 , wherein the status information includes status of freeable memory.

22. A method for managing memory as recited in claim 18 , wherein the status information includes efficiency of the process's garbage collector.

23. A method for managing memory as recited in claim 18 , further comprising requesting status information.

24. A method for managing memory as recited in claim 18 , wherein the status information is sent along with a memory allocation request.

25. A method for managing memory as recited in claim 18 , wherein the status information is received periodically.

26. A method for managing memory, comprising:

determining an appropriate amount of committed memory in a memory pool that is shared by a plurality of processes, wherein the memory pool includes committed memory and uncommitted memory;

maintaining the memory pool;

determining that an amount of uncommitted memory in the memory pool is required for allocation; and

allocating the required amount of uncommitted memory from the memory pool to a process.

27. A method for managing memory as recited in claim 26 , wherein determining that an amount of memory in the memory pool is required for allocation includes determining a request priority.

28. A method for managing memory as recited in claim 26 , wherein determining that an amount of memory in the memory pool is required for allocation includes receiving a request having an urgency level and determining a request priority based on the urgency level.

29. A method for managing memory as recited in claim 26 , wherein determining that an amount of memory in the memory pool is required for allocation includes determining whether the process includes memory collateral.

30. A method for managing memory as recited in claim 26 , wherein allocating the amount of memory to a process includes selecting the amount of memory from a subpool of the memory pool.

31. A method for managing memory as recited in claim 26 , wherein allocating the amount of memory to a process includes selecting the amount of memory from a subpool of the memory pool; further comprising refilling the subpool with released memory by the process.

32. A memory management system, comprising:

a memory including a memory pool that is shared by a plurality of processes, wherein the memory pool includes committed memory and uncommitted memory;

a processor coupled to the memory, configured to:

assign to each of the plurality of processes a corresponding amount of committed memory from the memory pool;

specify a specified amount of memory in the memory pool for allocation for a memory-requesting process;

request a memory-releasing process to release a requested amount of memory in the memory pool;

wherein the memory-requesting process is not necessarily the same process as the memory-releasing process.

33. A memory management system, comprising:

a memory including a memory pool that is shared by a plurality of processes, wherein the memory pool includes committed memory and uncommitted memory;

a processor coupled to the memory, configured to:

assign to each of the plurality of processes a corresponding amount of committed memory from the committed portion, the committed memory being memory required to run said each process;

receive status information from a plurality of processes; and

manage memory among the plurality of processes using the status information.

34. A memory management system, comprising:

a memory including a memory pool, wherein the memory pool is shared by a plurality of processes, and the memory pool includes committed memory and uncommitted memory;

a processor coupled to the memory, configured to:

determine an appropriate amount of committed memory in the memory pool;

maintain the memory pool;

determine that an amount of uncommitted memory in the memory pool is required for allocation; and

allocate the required amount of uncommitted memory from the memory pool to a process.

35. A computer program product for managing memory, the computer program product being embodied in a computer readable medium and comprising computer instructions for:

maintaining a memory pool that is shared by a plurality of processes, wherein the memory pool includes committed memory and uncommitted memory, and maintaining the memory pool includes:

assigning to each of the plurality of processes a corresponding amount of committed memory from the memory pool;

specifying a specified amount of memory in the memory pool for allocation for a memory-requesting process;

requesting a memory-releasing process to release a requested amount of memory in the memory pool;

wherein the memory-requesting process is not necessarily the same process as the memory-releasing process.

36. A computer program product for managing memory, the computer program product being embodied in a computer readable medium and comprising computer instructions for:

maintaining a memory pool that is shared by a plurality of processes, wherein the memory pool includes a committed portion and an uncommitted portion, and maintaining the memory pool includes:

assigning to each of the plurality of processes corresponding committed memory from the committed portion, the committed memory being memory required to run said each process;

receiving status information from the plurality of processes; and

managing memory among the plurality of processes using the status information.

37. A computer program product for managing memory, the computer program product being embodied in a computer readable medium and comprising computer instructions for:

determining an appropriate amount of committed memory in a memory pool, wherein the memory pool is shared by a plurality of processes, and the memory pool includes committed memory and uncommitted memory;

maintaining the memory pool;

determining that an amount of uncommitted memory in the memory pool is required for allocation; and

allocating the required amount of uncommitted memory from the memory pool to a process.

Assignments (7)
RELEASE OF SECURITY INTERESTS IN PATENTS RECORDED AT REEL/FRAME 052293/0121 Recorded Dec 3, 2025
From: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
To: AZUL SYSTEMS, INC.
Reel/Frame 073466/0064 →
SECURITY INTEREST Recorded Apr 2, 2020
From: AZUL SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
Reel/Frame 052293/0121 →
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2020
From: SILICON VALLEY BANK
To: AZUL SYSTEMS, INC.
Reel/Frame 052293/0869 →
RELEASE OF SECURITY INTEREST Recorded Feb 21, 2019
From: PARTNERS FOR GROWTH IV, L.P.
To: AZUL SYSTEMS, INC.
Reel/Frame 048411/0138 →
SECURITY INTEREST Recorded Mar 1, 2016
From: AZUL SYSTEMS, INC.
To: PARTNERS FOR GROWTH IV, L.P.
Reel/Frame 037959/0694 →
SECURITY AGREEMENT Recorded Nov 18, 2009
From: AZUL SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 023538/0316 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2004
From: WOLF, MICHAEL A.; CASTELLANO, LUCA ANDREA; TENE, GIL
To: AZUL SYSTEMS, INC.
Reel/Frame 015058/0672 →