[Javascript] Garbage Collection/ Freeing-up memory in Java script

Prashant Dahiya prashant.er at gmail.com
Wed Sep 23 03:24:46 CDT 2009


Hi Andrew,

 Thanks for the reply... I'll try your suggestions.

Regards,
P

On Wed, Sep 23, 2009 at 1:38 PM, Andrew Ip <andrewsyip at gmail.com> wrote:

> Hey Prashant,
>
> It seems like you're orphaning all the values that were put into your
> "valueList" array when you delete the reference to the "hash" object.
> Note that the delete operator in JavaScript basically just sets a
> variable's value to uninitialized.  Try emptying out the valueList
> array first, then delete the empty valueList array, and finally
> deleting the "hash" object afterwards.  You should see a difference.
>
> On another note, I'm not sure what you're trying to do with your
> Hashtable class, but JavaScript already allows you to use objects as
> associative arrays.  Check out the following:
>
> http://www.quirksmode.org/js/associative.html
>
> -andrew
>
> On 2009-09-22, at 11:46 PM, Prashant Dahiya wrote:
>
> > Hi,
> >
> >
> >
> > I’m trying with this type of code (example):
> >
> >
> >
> > function Hashtable() {
> >
> >
> >
> >   this.valueList = new Array();
> >
> >
> >
> >   var somePrivateMethod = function() { return 1; }
> >
> >
> >
> >   this.putValue = function(name, value) {
> >
> >
> >
> >    this.valueList[name] = value;
> >
> >
> >
> >  }
> >
> >
> >
> > }
> >
> >
> >
> >
> >
> >
> >
> > for (var i = 0; i < 100000; i++)
> >
> >
> >
> > {
> >
> >
> >
> >                var hash = new Hashtable();
> >
> >
> >
> >                hash.putValue("Key" + i, "Value" + i);
> >
> >
> >
> >                delete hash;
> >
> >
> >
> >                hash = null;
> >
> >
> >
> > }
> >
> >
> >
> > Running this script , it constantly increases the memory usage.
> > Although the
> > object "hash" is deleted in each iteration and although it is set to
> > null,
> > it does not seem to
> >
> > be removed from memory. Calling $.summary() after execution has
> > finished
> > shows more than 100000 functions still in memory. Running the script a
> > second time increases the memory again. More than 200000 functions
> > are in
> > memory after the second execution.
> >
> >
> >
> > Am I doing anything wrong here ?
> >
> >
> >
> > Any ideas, how I can get rid of the unreferenced memory? In fact,
> > AFAIK JS
> > engines do garbage collection automatically, any idea why does the
> > java
> > script engine does not release the memory immediately although it is
> > unreferenced?
> >
> > Is there a possibility to run the garbage collection of the java
> > script
> > engine ($.gc doesn’t helped much)?
> >
> >
> >
> > Regards,
> >
> > P
> > _______________________________________________
> > Javascript mailing list
> > Javascript at lists.evolt.org
> > http://lists.evolt.org/mailman/listinfo/javascript
>
> _______________________________________________
> Javascript mailing list
> Javascript at lists.evolt.org
> http://lists.evolt.org/mailman/listinfo/javascript
>



-- 
Thanks,
Prashant Dahiya



More information about the Javascript mailing list