Note
A circular reference is a situation where A refers to B, and B refers to A.
For example, the following script generates a circular reference.
var a = %[], b = %[];
a.b = b; b.a = a;
In such a situation, object a needs b and object b needs a. TJS2 does not detect such situations because the garbage collection method (reference counter) employed by TJS2 is difficult to detect and release objects. Therefore, these objects will not be deleted indefinitely (you can break circular references by explicitly invalidating either object with the invalidate operator).
Plug-ins can leak objects if mishandled reference counters. When creating a plug-in and handling TJS2 objects in it, be very careful with reference counters.