about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/manual/env-common.xml11
-rw-r--r--doc/manual/installation.xml7
-rw-r--r--doc/manual/release-notes.xml21
-rw-r--r--src/libmain/shared.cc2
4 files changed, 40 insertions, 1 deletions
diff --git a/doc/manual/env-common.xml b/doc/manual/env-common.xml
index d67ef714d0f9..99acc5949044 100644
--- a/doc/manual/env-common.xml
+++ b/doc/manual/env-common.xml
@@ -271,6 +271,17 @@ $ mount -o bind /mnt/otherdisk/nix /nix</screen>
 
 </varlistentry>
 
+
+<varlistentry><term><envar>GC_INITIAL_HEAP_SIZE</envar></term>
+
+  <listitem><para>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.</para></listitem>
+
+</varlistentry>
+
     
 </variablelist>
 
diff --git a/doc/manual/installation.xml b/doc/manual/installation.xml
index bc5e21f0d39a..87a6c446a2d5 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 <command>configure</command>'s <option>--with-bzip2</option>
 options to point to their respective locations.</para>
 
+<para>Nix can optionally use the <link
+xlink:href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/">Boehm
+garbage collector</link> to reduce the evaluator’s memory consumption.
+To enable it, install <literal>pkgconfig</literal> and the Boehm
+garbage collector, and pass the flag <option>--enable-gc</option> to
+<command>configure</command>.</para>
+
 </section>
 
 
diff --git a/doc/manual/release-notes.xml b/doc/manual/release-notes.xml
index 5b1c30bf8292..1e579a37b017 100644
--- a/doc/manual/release-notes.xml
+++ b/doc/manual/release-notes.xml
@@ -8,6 +8,27 @@
 
 <!--==================================================================-->
 
+<section xml:id="ssec-relnotes-1.0"><title>Release 1.0 (TBA)</title>
+
+<para>This release has the following improvements:</para>
+
+<itemizedlist>
+
+  <listitem>
+    <para>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 <option>--enable-gc</option> configure
+    option.</para>
+  </listitem>
+
+</itemizedlist>
+
+</section>
+
+
+<!--==================================================================-->
+
 <section xml:id="ssec-relnotes-0.16"><title>Release 0.16 (August 17, 2010)</title>
 
 <para>This release has the following improvements:</para>
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 82309544a62d..29fc13e33627 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 {