ocaml-core / base / core / extended / lib / extended_gc.ml

The branch 'bash' does not exist.
open Core.Std

(* execute function supressing compactions. the doc says:
   mutable max_overhead : int;
   Heap compaction is triggered when the estimated amount of "wasted" memory
   is more than max_overhead percent of the amount of live data.
   If max_overhead is set to 0, heap compaction is triggered at the end of each
   major GC cycle (this setting is intended for testing purposes only).
   If max_overhead >= 1000000, compaction is never triggered.
   Default: 500. *)
let without_compactions ?logger ~f a =
  (* note that f may call get/set itself, and the fields in the Gc.control
     struct are mutable, so it does not make much sense to save it *)
  protectx (Gc.get ()).Gc.Control.max_overhead
    ~f:(fun _ ->
      Gc.tune ?logger ~max_overhead:1000000 ();
      f a)
    ~finally:(fun max_overhead -> Gc.tune ?logger ~max_overhead ())

(* external print_roots : unit -> unit = "print_roots" ;; *)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.