Question:
The new
operator allocates memory for objects.How isthis memory deallocated?
Answer:
If you have ever programmed in C++, you might wonder why JavaScript doesnot have a delete
operator to match the new
operator. The reason for this is simple: It’s not necessary!
In JavaScript, memory for objects is automatically reclaimed wheneverthere is no longer need for the object. The JavaScript interpretertracks references to objects and deletes them when variables no longerrefer to them.
For example, consider the following JavaScript code:
d = new Array (50);d = null;
The first statement allocates memory for an Array
objectlarge enough to hold 50 elements, and then records the fact that the newobject is referenced by a variable named d.
The next statement, however, changes d so that instead ofreferring to the Array
object, it contains thespecial value null
. Since there is no longer any way toaccess the Array
object, the JavaScript interpreterdestroys it by reclaiming the memory that was allocated to it.
Reclaiming memory allocated to objects that can no longer be accessedis called garbage collection. Allocated objects nolonger accessible by variables are called orphan objects.
This next example shows how to modify the above code to prevent thedestruction of the Array
object:
Since the In conclusion, there is no need to worry about destroying objects inJavaScript. Garbage collection is performed automatically by theinterpreter whenever objects are no longer useful or documents areunloaded. If you want to explicitly destroy an object, you can do so byabandoning it ? that is, by making sure there are no variables thatrefer to it. (Setting the variables to d = new Array (50);
makee refer to the same object asd
e = d; //
d = null; //Array
objectArray
object is referenced by e at themoment it is abandoned by d, the Array
objectremains intact.null
works prettywell for this.)