Differences between version 4 and predecessor to the previous major change of GarbageCollection.
Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 4 | Last edited on Monday, October 6, 2003 2:08:26 pm | by AristotlePagaltzis | Revert |
Older page: | version 2 | Last edited on Saturday, September 13, 2003 2:27:08 am | by AristotlePagaltzis | Revert |
@@ -1 +1,13 @@
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 (infact, 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 [DataStructure]s still needed by another part
+
+but not from
+* filling up all avaliable memory
+* attempting to dereference null pointers or references
+
+Antique GarbageCollection systems used reference counting algorithms. 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 [DataStructure]s. 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.''