Spider Monkey는 Mark-and-Sweep 방식의 Garbage Collector가 직접 JS_Object들의 메모리


해제를 담당하기 때문에 만약 GC에 포함시키기를 원하지 않는 Object들에 대해서는 항상 Reachable

state에 놓일 수 있도록 직접 관리를 해주어야 한다.
(Reachable한 상태에 놓여야 하는 Object들은 추후에 다시 사용되는 Object들이다)
가장 손쉽게 JS_Object를 Reachable한 상태로 만드는 방법은 JS_AddRoot함수를 이용하는 방법이다.
JS_AddRoot 함수의 Prototype은 아래와 같다.
첫번째 인자로 context, 두번째 인자로 root에 등록하려는 variable (ex:JS_Object)의 주소를 넘겨줘서 
Root에 등록하면 JS_RemoveRoot 함수를 통해 root에서 unregister 할 때까지 variable은 GC되지 않는다.
 
추가로 JS_IsAboutToBeFinalized 함수를 통해 해당 Object가 finalized(deleted)될지 여부를 확인할 수 있다.

반환값이 Object의 운명을 나타낸다.
만약 Garbage Collecting의 범위에 포함시키기를 원한다면 아래 함수를 통해 가능하다.