This is an archived page. It's not actively maintained.


This article covers features introduced in SpiderMonkey 31

Specify a new callback function for Out of Memory error.


JS::SetOutOfMemoryCallback(JSRuntime *rt, JS::OutOfMemoryCallback cb, void *data);
Name Type Description
rt JSRuntime * The JSRuntime for which to set the GC callback.
cb JS::OutOfMemoryCallback Pointer to the new callback function to use.
data void * data parameter which will be passed to JS::OutOfMemoryCallback. Added in SpiderMonkey 38

Callback syntax

typedef void
(* OutOfMemoryCallback)(JSContext *cx, void *data);
Name Type Description
data void * data parameter passed to JS::SetOutOfMemoryCallback. Added in SpiderMonkey 38


Unlike the error reporter, which is only called if the exception for an OOM bubbles up and is not caught, the JS::OutOfMemoryCallback is called immediately at the OOM site to allow the embedding to capture the current state of heap allocation before anything is freed. If the large-allocation-failure callback is called at all (not all allocation sites call the large-allocation-failure callback on failure), it is called before the out-of-memory callback; the out-of-memory callback is only called if the allocation still fails after the large-allocation-failure callback has returned.

JS::SetOutOfMemoryCallback sets a callback function for it.

See Also