Initializes the JavaScript runtime.


JSRuntime *
JS_NewRuntime(uint32_t maxbytes,
              uint32_t maxNurseryBytes = JS::DefaultNurseryBytes,
              JSRuntime *parentRuntime = nullptr);

JS_NewRuntime(uint32_t maxbytes, JSUseHelperThreads useHelperThreads,
              JSRuntime *parentRuntime = nullptr); // Deprecate since JSAPI 32
Name Type Description
maxbytes uint32 Maximum number of allocated bytes after which garbage collection is run.
maxNurseryBytes uint32 Nursery size in bytes. maxNurseryBytes is rounded down to a multiple of chunk size. Added in SpiderMonkey 38
parentRuntime JSRuntime * The topmost parent or nullptr . Added in SpiderMonkey 31


JS_NewRuntime initializes the JavaScript runtime environment. Call JS_NewRuntime before making any other API calls except JS_Init. JS_NewRuntime allocates memory for the JSRuntime and initializes certain internal runtime structures. maxbytes specifies the number of allocated bytes after which garbage collection is run.

Generally speaking, most applications need only one JSRuntime. In a JS_THREADSAFE build, each runtime is capable of handling multiple execution threads, using one JSContext per thread, sharing the same JSRuntime. You only need multiple runtimes if your application requires completely separate JS engines that cannot share values, objects, and functions.

On success, JS_NewRuntime returns a pointer to the newly created runtime, which the caller must later destroy using JS_DestroyRuntime. Otherwise it returns NULL.


Ordinarily, JS_NewRuntime should be the first JSAPI call in an application, and JS_DestroyRuntime and JS_ShutDown should be the last ones.

See Also

Document Tags and Contributors

Contributors to this page: arai, ziyunfei, fscholz, Jorend, Mgjbot, Joelafesse, Dria, MMondor
Last updated by: arai,
Hide Sidebar