MLtonGC ======= [source,sml] ---- signature MLTON_GC = sig val collect: unit -> unit val pack: unit -> unit val setMessages: bool -> unit val setSummary: bool -> unit val unpack: unit -> unit structure Statistics : sig val bytesAllocated: unit -> IntInf.int val lastBytesLive: unit -> IntInf.int val numCopyingGCs: unit -> IntInf.int val numMarkCompactGCs: unit -> IntInf.int val numMinorGCs: unit -> IntInf.int val maxBytesLive: unit -> IntInf.int end end ---- * `collect ()` + causes a garbage collection to occur. * `pack ()` + shrinks the heap as much as possible so that other processes can use available RAM. * `setMessages b` + controls whether diagnostic messages are printed at the beginning and end of each garbage collection. It is the same as the `gc-messages` runtime system option. * `setSummary b` + controls whether a summary of garbage collection statistics is printed upon termination of the program. It is the same as the `gc-summary` runtime system option. * `unpack ()` + resizes a packed heap to the size desired by the runtime. * `Statistics.bytesAllocated ()` + returns bytes allocated (as of the most recent garbage collection). * `Statistics.lastBytesLive ()` + returns bytes live (as of the most recent garbage collection). * `Statistics.numCopyingGCs ()` + returns number of (major) copying garbage collections performed (as of the most recent garbage collection). * `Statistics.numMarkCompactGCs ()` + returns number of (major) mark-compact garbage collections performed (as of the most recent garbage collection). * `Statistics.numMinorGCs ()` + returns number of minor garbage collections performed (as of the most recent garbage collection). * `Statistics.maxBytesLive ()` + returns maximum bytes live (as of the most recent garbage collection).