Free all resources used by the JS engine, not associated with specific runtimes.
Syntax
void JS_ShutDown(void);
Description
Destroys all free-standing resources allocated by SpiderMonkey, not associated with any JSRuntime
, JSContext
, or other structure.
This method should be called after all other JSAPI data has been properly cleaned up: every JSRuntime
created with JS_NewRuntime
must have been destroyed with JS_DestroyRuntime
, every JSContext
created with JS_NewContext
must have been destroyed with JS_DestroyContext
, and so on. Calling this method before all other resources have been destroyed has undefined behavior.
Failure to call this method, at present, has no adverse effects other than leaking memory. This may not always be the case; it's recommended that all embedders call this method when all other JSAPI operations have completed, to be future-proof.
It is currently not possible to initialize SpiderMonkey multiple times (that is, calling JS_Init, then other JSAPI methods, then JS_ShutDown in that order, then doing so again). This restriction may eventually be lifted.
Implementation note: This method has been used to clean up memory allocated by jsdtoa.cpp
, memory allocated to implement Date.now()
on Windows, and when the Internationalization API is enabled, memory internally allocated by ICU. Exact details about what this method cleans up will vary depending upon the version of SpiderMonkey in use.