Penguin
Note: You are viewing an old revision of this page. View the current version.

GarbageCollection means letting the computer track memory usage and free unused blocks automatically. This works surprisingly well, and is used in many ProgrammingLanguages? - in just about every very high level language, and also Java. Since manually managing memory is notoriously difficult, GarbageCollection can cut a huge portion out of development time and nowadays it won't even negatively impact (in fact, may improve) the performance of an application.

GarbageCollection protects programmers from

  • forgetting to deallocate memory, ie creating memory leaks
  • getting in trouble with responsibility, where one part of the code may deallocate a DataStructures still needed by another part

but not from

  • filling up all avaliable memory
  • attempting to dereference null pointers or references 1?

Antique GarbageCollection systems used reference counting algorithms2?. However, they need programmer assistance and reduce performance: reference counting code and reference counter data needs to be inserted all over the place, harming cache coherency. On top of that they're unable to reclaim cyclic DataStructures. It is no wonder they have fallen from favour. However, they do have an advantage that more sophisticated approaches cannot offer without great pains, if at all: timely destruction, which means objects get reclaimed as soon as their last referent has vanished. This can be of immense value for ObjectOrientedProgramming? under certain circumstances.

AddToMe: there should probably be separate pages on !ReferenceCounting? and !MarkAndSweep?, the former having the above paragraph moved to.

-- 1? ML languages have a interesting (perhaps obvious) way of preventing that: there are no null references, references can only be created by applying a ref operator to an existing object. If you want an object to be optional there is seperate option type for expressing that.

2? Older versions of Python (those before 2.1?) used this. I think the excuse was that it was fast.