CMMI,.NET,JAVA,Networking,Oracle,SQL Server, Testing Questions And Answers

Home| Forums | Join Google Group | Join Yahoo Group | Jobs
Get custom programming done at GetAFreelancer.com!
Earn Money
  Trading Forex Online
  Paramount Airways
  Free Data Recovery
 Cargo
 Job Portal
  HSBC Investment
 Management
 Cheap Web Hosting
  Make Trip
  Cheap Air Travel
 Leisure Hotel
  Free Air Travel
  Mutual Fund Informations
   Cheapest Cellular Plan
 Free Sexy Indians
  Call Center Software
  Hot Indian
Programming Help | Homework Help | Counseling
Astrology Advice | Tarot Advice | Parenting
Dating Advice | Love Advice | Divorce Advice
Legal Advice | Debt Advice | Career Advice
Runtime Technical Questions
Garbage Collection
What is garbage collection?
Garbage collection is a mechanism that allows the computer to detect when an object can no
longer be accessed. It then automatically releases the memory used by that object (as well as
calling a clean-up routine, called a "finalizer," which is written by the user). Some garbage
collectors, like the one used by .NET, compact memory and therefore decrease your program's
working set.

How does non-deterministic garbage collection affect my code?
For most programmers, having a garbage collector (and using garbage collected objects) means
that you never have to worry about deallocating memory, or reference counting objects, even if
you use sophisticated data structures. It does require some changes in coding style, however, if
you typically deallocate system resources (file handles, locks, and so forth) in the same block of
code that releases the memory for an object. With a garbage collected object you should provide
a method that releases the system resources deterministically (that is, under your program
control) and let the garbage collector release the memory when it compacts the working set.

Can I avoid using the garbage collected heap?
All languages that target the runtime allow you to allocate class objects from the garbage-
collected heap. This brings benefits in terms of fast allocation, and avoids the need for
programmers to work out when they should explicitly 'free' each object.
The CLR also provides what are called ValueTypes--these are like classes, except that
ValueType objects are allocated on the runtime stack (rather than the heap), and therefore
reclaimed automatically when your code exits the procedure in which they are defined. This is
how "structs" in C# operate.
Managed Extensions to C++ lets you choose where class objects are allocated. If declared as
managed Classes, with the __gc keyword, then they are allocated from the garbage-collected
heap. If they don't include the __gc keyword, they behave like regular C++ objects, allocated from
the C++ heap, and freed explicitly with the "free" method.
For additional information about Garbage Collection see:
Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework
Garbage Collection, Part 2: Automatic Memory Management in the Microsoft .NET Framework
Earn Money
  Trading Forex Online
  Paramount Airways
  Free Data Recovery
 Cargo
 Job Portal
  HSBC Investment
 Management
 Cheap Web Hosting
  Make Trip
  Cheap Air Travel
 Leisure Hotel
  Free Air Travel
  Mutual Fund Informations
   Cheapest Cellular Plan
 Free Sexy Indians
  Call Center Software
  Hot Indian