Memory limits, allocation limits, and thread cancellation

Memprof-limits provides per-thread global memory limits, per-thread allocation limits, and cancellation of threads, with ways to ensure resource-safety after interruption.

Global memory limits let you bound the memory consumption of a task, in terms of the major heap size.

Allocation limits let you bound the execution time of a task measured in number of allocations. Allocation limits do not count deallocations, and are therefore a measure of the work done, which can be more suitable (reliable, portable, deterministic) than wall-clock time.

Token limits lets you cancel a (CPU-bound) task preemptively and at a distance.

Tasks are interrupted by raising an asynchronous exception. Memprof-limits provides features and guidance for reasoning about the consistency of state in the presence of such interrupts.

The implementation uses OCaml's Memprof engine with a low sampling rate that does not affect performance. A reimplementation of the Memprof interface compatible with memprof-limits running at the same time is provided for profiling needs.

AuthorGuillaume Munch-Maccagnoni <>
LicenseLGPL-3.0-only WITH LGPL-3.0-linking-exception
Issue Tracker
MaintainerGuillaume Munch-Maccagnoni <>
Source [http]
No package is dependent