Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Client Scripting
Expertise: Beginner
Mar 19, 1997

How is memory deallocated?

Question:
The new operator allocates memory for objects. How is this memory deallocated?

Answer:
If you have ever programmed in C++, you might wonder why JavaScript does not 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 whenever there is no longer need for the object. The JavaScript interpreter tracks references to objects and deletes them when variables no longer refer to them.

For example, consider the following JavaScript code:

d = new Array (50); d = null;
The first statement allocates memory for an Array object large enough to hold 50 elements, and then records the fact that the new object is referenced by a variable named d.

The next statement, however, changes d so that instead of referring to the Array object, it contains the special value null. Since there is no longer any way to access the Array object, the JavaScript interpreter destroys it by reclaiming the memory that was allocated to it.

Reclaiming memory allocated to objects that can no longer be accessed is called garbage collection. Allocated objects no longer accessible by variables are called orphan objects.

This next example shows how to modify the above code to prevent the destruction of the Array object:

d = new Array (50);
e = d; //
make e refer to the same object as d
d = null; //
disassociate d from the Array object

Since the Array object is referenced by e at the moment it is abandoned by d, the Array object remains intact.

In conclusion, there is no need to worry about destroying objects in JavaScript. Garbage collection is performed automatically by the interpreter whenever objects are no longer useful or documents are unloaded. If you want to explicitly destroy an object, you can do so by abandoning it — that is, by making sure there are no variables that refer to it. (Setting the variables to null works pretty well for this.)

DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date