From: Olivier Andrieu <andrieu@ijm.jussieu.fr>
To: jonathan.roewen@gmail.com
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Garbage Collecting
Date: Sun, 02 Jan 2005 00:59:35 +0100 (CET) [thread overview]
Message-ID: <20050102.005935.74752788.oandrieu@nerim.net> (raw)
In-Reply-To: <ad8cfe7e05010115045ef0e999@mail.gmail.com>
> Jonathan Roewen [Sun, 2 Jan 2005]:
>
> Hi,
>
> We're trying to figure out why memory doesn't get collected in our
> OS by the OCaml GC, and seems like it doesn't want to reclaim any
> memory. We also suspect that Gc.allocated_bytes has a memory leak.
>
> Here is our test case:
> (* File mod.ml -- some ``useful'' Caml functions *)
> open Printf
>
> let fib (n:int) =1 + n
>
> ;;
>
> let mem = ref 0;;
> let do_stuff () =
> (* making this loop more increases mem usage *)
> for i=1 to 900000 do
> fib i;
> int_of_float (Gc.allocated_bytes()); (* A *)
> done;
> mem := int_of_float (Gc.allocated_bytes())
> ;;
>
> let do_results() =
> printf "allocated %d\n" !mem;
> Gc.full_major(); (* B1 *)
> Gc.compact();
> Gc.major();
> Gc.minor(); (*B2 *)
> printf "allocated %d\n" (int_of_float (Gc.allocated_bytes()))
> ;;
> do_stuff ();;
> do_results ();;
>
> My results:
> Test 1)
> allocated 57600272
> allocated 57600788
> Test 2)
> allocated 272
> allocated 956
> Test 3)
> allocated 272
> allocated 744
>
> Where test 1 is using the above code; test 2 is with line A commented
> out; and test 3 is with both line A and lines B1-B2 commented out.
>
> As you can see from our tests, that invoking the Gc increases memory,
> and Gc.allocated_bytes appears to gobble it up like candy.
Well, what do you expect ? Gc.allocated_bytes is a pretty
regular-looking function : it computes stuff, using a couple of
intermediate values, so it allocates a couple of bytes to store
these. Now, if you stick this a loop, number_of_iterations times
couple_of_bytes bytes get allocated. This has nothing to do with
reclaiming memory actually, Gc.allocated_bytes simply keeps track of
how many bytes were requested to the runtime; all those bytes are not
"live".
> Would appreciate someone shedding some light on this topic, as
> writing our OS in OCaml is going to have some major issues if it
> won't reclaim memory.
I wouldn't worry. There is some anecdotal evidence that the OCaml GC
is not a fraud and that it _does_ reclaim memory.
--
Olivier
prev parent reply other threads:[~2005-01-01 23:59 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-01 23:04 Jonathan Roewen
2005-01-01 23:48 ` Jonathan Roewen
2005-01-01 23:59 ` Olivier Andrieu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050102.005935.74752788.oandrieu@nerim.net \
--to=andrieu@ijm.jussieu.fr \
--cc=caml-list@yquem.inria.fr \
--cc=jonathan.roewen@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox