Browse thread
[Caml-list] Out_of_memory exception in output_value
- Richard Jones
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2004-05-28 (09:10) |
From: | Richard Jones <rich@a...> |
Subject: | [Caml-list] Out_of_memory exception in output_value |
I have a problem with a real program which tries to write an approx 200 MB data structure to disk using output_value. The output_value statement throws an Out_of_memory exception, even though the Unix process itself is only using around 350 MB on a machine with plenty of physical RAM and swap. The test program below reproduces the problem. Is there any way I can tell the memory allocator that it's allowed to keep allocating memory, or work around this bug in another way? Rich. --- (* ocamlopt -w s unix.cmxa memtest.ml -o memtest *) let arraylen = 200000 let stringlen = 1000 let () = prerr_endline "Creating big structure ..."; let data = Array.init arraylen (fun i -> String.create stringlen) in prerr_endline "Sleeping for 5 seconds ..."; Unix.sleep 5; prerr_endline "Saving big structure to a file ..."; let chan = open_out_bin "/tmp/test.dat" in output_value chan data; close_out chan; ignore (Sys.command "ls -lh /tmp/test.dat") --- $ ./memtest Creating big structure ... Sleeping for 5 seconds ... Saving big structure to a file ... Fatal error: exception Out_of_memory During the sleep: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3098 rich 25 0 203m 198m 1640 S 43.4 42.0 0:03.21 memtest Just before the crash: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3103 rich 18 0 333m 301m 1640 D 1.7 63.7 0:04.49 memtest -- Richard Jones. http://www.annexia.org/ http://www.j-london.com/ Merjis Ltd. http://www.merjis.com/ - improving website return on investment http://www.winwinsales.co.uk/ - CRM improvement consultancy ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners