mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-11 14:21:10 +02:00
Added an introductory blurb about GC that I had lying around.
This commit is contained in:
parent
a9e40ed0d0
commit
c5ee546dda
1 changed files with 15 additions and 0 deletions
|
@ -2,6 +2,21 @@
|
||||||
@node Memory Management
|
@node Memory Management
|
||||||
@chapter Memory Management and Garbage Collection
|
@chapter Memory Management and Garbage Collection
|
||||||
|
|
||||||
|
Guile uses a @emph{garbage collector} to manage most of its objects.
|
||||||
|
This means that the memory used to store a Scheme string, say, is
|
||||||
|
automatically reclaimed when no one is using this string any longer.
|
||||||
|
This can work because Guile knows enough about its objects at run-time
|
||||||
|
to be able to trace all references between them. Thus, it can find
|
||||||
|
all 'life' objects (objects that are still in use) by starting from a
|
||||||
|
known set of 'root' objects and following the links that these objects
|
||||||
|
have to other objects, and so on. The objects that are not reached by
|
||||||
|
this recursive process can be considered 'dead' and their memory can
|
||||||
|
be used for new objects.
|
||||||
|
|
||||||
|
When you are programming in Scheme, you don't need to worry about the
|
||||||
|
garbage collector. When programming in C, there are a few rules that
|
||||||
|
you must follow so that the garbage collector can do its job.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Garbage Collection::
|
* Garbage Collection::
|
||||||
* Memory Blocks::
|
* Memory Blocks::
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue