Thread memory reclamation
First Claim
1. A method of managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread, the method comprising:
- intercepting messages forwarded between the process and the operating system;
ascertaining, from at least one of the intercepted messages, locations of at least two memory segments that are allocated to a given thread in the process;
storing a linked list of memory segments associated with the given thread;
monitoring the given thread; and
freeing each memory segment indicated in the linked list of memory segments if it is determined that the given thread has stopped operating.
10 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method of managing memory utilized by a process executing on a computer system with an operating system frees memory segments allocated to threads (in the process) if it is determined that such threads have stopped operating. To that end, messages forwarded between the process and operating system are intercepted. The location of a memory segment that is allocated to a given thread in the process then is ascertained from at least one of the intercepted messages. The given thread thus is monitored and its allocated memory segment is freed if it is determined that the given thread has stopped operating.
41 Citations
45 Claims
-
1. A method of managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread, the method comprising:
-
intercepting messages forwarded between the process and the operating system;
ascertaining, from at least one of the intercepted messages, locations of at least two memory segments that are allocated to a given thread in the process;
storing a linked list of memory segments associated with the given thread;
monitoring the given thread; and
freeing each memory segment indicated in the linked list of memory segments if it is determined that the given thread has stopped operating. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. An apparatus for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread, the apparatus comprising:
-
an intercepting module that intercepts messages forwarded between the process and the operating system;
a location ascertaining module that ascertains, from at least one intercepted messages, a location of each memory segment of at least two memory segments that are allocated to a given thread in the process;
storing the location of each memory segment associated with the given thread in a linked list;
a monitoring thread that monitors the given thread; and
a segment freeing module that frees each memory segment indicated in the linked list if it is determined that the given thread has stopped operating. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A computer program product for use on a computer system for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread, the computer program product comprising a computer usable medium having computer readable program code thereon, the computer readable program code including:
- program code for intercepting messages forwarded between the process and the operating system;
program code for ascertaining, from at least one intercepted message, the locations of at least two memory segments allocated to a given thread in the process;
program code for generating a linked list of the at least two memory segments associated with the given thread;
program code for monitoring the given thread; and
program code for freeing the locations of the at least two memory segments by traversing the linked list if it is determined that the given thread has stopped operating. - View Dependent Claims (15, 16, 17, 18, 19, 20)
- program code for intercepting messages forwarded between the process and the operating system;
-
21. A method of managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread comprised of at least two memory segments, the method comprising:
-
intercepting memory allocation requests from the process, the memory allocation requests being directed toward the operating system and requesting that the operating system allocate at least two memory segments for a given thread in the process;
storing locations of the at least two memory segments in a linked list associated with the given thread;
forwarding the memory allocation requests to the operating system, the operating system responsively allocating memory segments for the given thread;
receiving a memory segment message from the operating system identifying the locations of the at least two memory segments allocated for the given thread;
storing the location of each memory segment in a linked list associated with the given thread; and
forwarding a memory allocation reply message to the process identifying the locations of the at least two memory segments associated with the given thread. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29)
-
-
30. An apparatus for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread executing using at least two memory segments, the apparatus comprising:
-
a first input that receives a memory segment messages from the operating system identifying the locations at least two memory segments allocated for the given thread, the memory segment messages being forwarded from the operating system in response to memory allocation requests from the process to allocate the memory segments for the given thread;
a memory device including a linked list for storing the locations of the at least two memory segments and a first output that forwards a memory allocation reply messages to the process, the memory allocation reply messages identifying the locations of each memory segment of the given thread. - View Dependent Claims (31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. A computer program product for use on a computer system for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread each thread executing using at least two memory segments, the computer program product comprising a computer usable medium having computer readable program code thereon, the computer readable program code including:
-
program code for receiving memory allocation requests from the process, the memory allocation requests being directed toward the operating system and requesting that the operating system allocate memory segments for a given thread in the process;
program code for forwarding the memory allocation requests to the operating system, the operating system responsively allocating at least two memory segments for the given thread;
program code for receiving memory segment messages from the operating system identifying the locations of the at least two memory segments allocated for the given thread;
program code for storing the locations of the memory segments; and
program code for forwarding at least two memory allocation reply messages to the process identifying the locations of the at least two memory segments of the given thread. - View Dependent Claims (40, 41, 42, 43, 44, 45)
-
Specification