diff --git a/doc/manual/env-common.xml b/doc/manual/env-common.xml
index d67ef714d..99acc5949 100644
--- a/doc/manual/env-common.xml
+++ b/doc/manual/env-common.xml
@@ -271,6 +271,17 @@ $ mount -o bind /mnt/otherdisk/nix /nix
+
+GC_INITIAL_HEAP_SIZE
+
+ If Nix has been configured to use the Boehm garbage
+ collector, this variable sets the initial size of the heap in bytes.
+ It defaults to 384 MiB. Setting it to a low value reduces memory
+ consumption, but will increase runtime due to the overhead of
+ garbage collection.
+
+
+
diff --git a/doc/manual/installation.xml b/doc/manual/installation.xml
index bc5e21f0d..87a6c446a 100644
--- a/doc/manual/installation.xml
+++ b/doc/manual/installation.xml
@@ -105,6 +105,13 @@ this packages. Alternatively, if you already have it installed, you
can use configure's
options to point to their respective locations.
+Nix can optionally use the Boehm
+garbage collector to reduce the evaluator’s memory consumption.
+To enable it, install pkgconfig and the Boehm
+garbage collector, and pass the flag to
+configure.
+
diff --git a/doc/manual/release-notes.xml b/doc/manual/release-notes.xml
index 5b1c30bf8..1e579a37b 100644
--- a/doc/manual/release-notes.xml
+++ b/doc/manual/release-notes.xml
@@ -6,6 +6,27 @@
+
+
+Release 1.0 (TBA)
+
+This release has the following improvements:
+
+
+
+
+ Nix can now optionally use the Boehm garbage collector.
+ This significantly reduces the Nix evaluator’s memory footprint,
+ especially when evaluating large NixOS system configurations. It
+ can be enabled using the configure
+ option.
+
+
+
+
+
+
+
Release 0.16 (August 17, 2010)
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 82309544a..29fc13e33 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -364,7 +364,7 @@ int main(int argc, char * * argv)
allocated. This might be a problem on systems that don't
overcommit. */
if (!getenv("GC_INITIAL_HEAP_SIZE"))
- GC_expand_hp(384000000);
+ GC_expand_hp(384 * 1024 * 1024);
#endif
try {