-----------------------------------------------------------

New Message on MumbaiUserGroup

-----------------------------------------------------------
From: Swapnil_B1
Message 1 in Discussion

  
Garbage Collector   
Automatic memory management is one of the services that the common language 
runtime provides during Managed Execution. The common language runtime's 
garbage collector manages the allocation and release of memory for an 
application. For developers, this means that you do not have to write code to 
perform memory management tasks when you develop managed applications. 
Automatic memory management can eliminate common problems, such as forgetting 
to free an object and causing a memory leak, or attempting to access memory for 
an object that has already been freed. This section describes how the garbage 
collector allocates and releases memory.  Allocating Memory 
When you initialize a new process, the runtime reserves a contiguous region of 
address space for the process. This reserved address space is called the 
managed heap. The managed heap maintains a pointer to the address where the 
next object in the heap will be allocated. Initially, this pointer is set to 
the managed heap's base address. All reference type are allocated on the 
managed heap. When an application creates the first reference type, memory is 
allocated for the type at the base address of the managed heap. When the 
application creates the next object, the garbage collector allocates memory for 
it in the address space immediately following the first object. As long as 
address space is available, the garbage collector continues to allocate space 
for new objects in this manner.  
Allocating memory from the managed heap is faster than unmanaged memory 
allocation. Because the runtime allocates memory for an object by adding a 
value to a pointer, it is almost as fast as allocating memory from the stack. 
In addition, because new objects that are allocated consecutively are stored 
contiguously in the managed heap, an application can access the objects very 
quickly.  Releasing Memory 
The garbage collector's optimizing engine determines the best time to perform a 
collection based on the allocations being made. When the garbage collector 
performs a collection, it releases the memory for objects that are no longer 
being used by the application. It determines which objects are no longer being 
used by examining the application's roots. Every application has a set of 
roots. Each root either refers to an object on the managed heap or is set to 
null. An application's roots include global and static object pointers, local 
variables and reference object parameters on a thread's stack, and CPU 
registers. The garbage collector has access to the list of active roots that 
the Just In Time Compiler and the runtime maintain. Using this list, it 
examines an application's roots, and in the process creates a graph that 
contains all the objects that are reachable from the roots.  
Objects that are not in the graph are unreachable from the application's roots. 
The garbage collector considers unreachable objects garbage and will release 
the memory allocated for them. During a collection, the garbage collector 
examines the managed heap, looking for the blocks of address space occupied by 
unreachable objects. As it discovers each unreachable object, it uses a 
memory-copying function to compact the reachable objects in memory, freeing up 
the blocks of address spaces allocated to unreachable objects. Once the memory 
for the reachable objects has been compacted, the garbage collector makes the 
necessary pointer corrections so that the application's roots point to the 
objects in their new locations. It also positions the managed heap's pointer 
after the last reachable object. Note that memory is compacted only if a 
collection discovers a significant number of unreachable objects. If all the 
objects in the managed heap survive a collection, then there is no need for 
memory compaction.  
To improve performance, the runtime allocates memory for large objects in a 
separate heap. The garbage collector automatically releases the memory for 
large objects. However, to avoid moving large objects in memory, this memory is 
not compacted.  
Swapnil (Swaps)  
http://swapsnet.spaces.live.com/

-----------------------------------------------------------

To stop getting this e-mail, or change how often it arrives, go to your E-mail 
Settings.
http://groups.msn.com/MumbaiUserGroup/_emailsettings.msnw

Need help? If you've forgotten your password, please go to Passport Member 
Services.
http://groups.msn.com/_passportredir.msnw?ppmprop=help

For other questions or feedback, go to our Contact Us page.
http://groups.msn.com/contact

If you do not want to receive future e-mail from this MSN group, or if you 
received this message by mistake, please click the "Remove" link below. On the 
pre-addressed e-mail message that opens, simply click "Send". Your e-mail 
address will be deleted from this group's mailing list.
mailto:[EMAIL PROTECTED]

Reply via email to