Doug --
    I seem to recall reading somewhere that the "delete" command in JS doesn't really invoke the garbage collector to do its thing... I believe the article/white paper went on to say more memory would actually be freed by re-instantiating a variable/object and setting its value to null or zero... don't know if this will help you or not, but might be worth a try.
-----Original Message-----
From: Doug Melvin [mailto:[EMAIL PROTECTED]]
Sent: Friday, February 02, 2001 4:21 PM
To: dynapi-help
Subject: [Dynapi-Help] destory()

Has anyone gotten any farther with memory reclemation in IE?
 
I added a destroy() method to the dynlayer object.
See end of this doc for the results of testing..
I then placed a call in
 
DynLayer.prototype.deleteAllChildren=function() {
    for (var i in this.children) {
        this.children[i].deleteAllChildren();
        this.children[i].invokeEvent('delete');
        DynAPI.removeFromArray(this.dyndoc.all,this.children[i],true);
        if (is.ns && this.children[i].elm) {
            if (!this.doc.recycled) this.doc.recycled=[];
            this.doc.recycled[this.doc.recycled.length]=this.children[i].elm;
        }
        DynLayer.deleteElement(this.children[i]);
        this.children[i].parent=null;
        this.children[i].isChild=false;
        this.children[i].destroy();  //<------- da call -----------------------------------------------------//
 
    }
    this.children=[];
};
 
 
the destroy function is as follows:
 
DynLayer.prototype.destroy=function(){
 status="Destroy called "+(++calledtimes)+" times";
 //delete all properties and function of the DynLayer object 
 this.removeAllEventListeners();
 delete this.id;
 delete this.x;
 delete this.y;
 delete this.w;
 delete this.h;
 delete this.bgColor;
 delete this.visible;
 delete this.z;
 delete this.bgImage;
 delete this.children;
 delete this.parent;
 delete this.isChild;
 delete this.created;
 delete this.html;
 delete this.bgImage;
 delete this.elm;
 delete this.doc;
 delete this.css;
 delete this.unassigned;
 delete this.nullCount;
 delete this.createElement;
 delete this.deleteElement ;
 delete this.assignElement;
 delete this.assignChildren;
 delete this.flagPrecreate;
 delete this.flagDeleteChildren;
 delete this.isDynLayer ;
 delete this.getClass;
 delete this.toString;
 delete this.addChildID;
 delete this.addChild;
 delete this.removeChild;
 delete this.removeFromParent;
 delete this.deleteChild;
 delete this.deleteAllChildren;
 delete this.deleteFromParent;
 delete this.getInnerHTML;
 delete this.getOuterHTML;
 delete this.setStyle;
 delete this.moveTo;
 delete this.moveBy;
 delete this.setX;
 delete this.setY;
 delete this.getX;
 delete this.getY;
 delete this.getPageX;
 delete this.getPageY;
 delete this.setPageX;
 delete this.setPageY;
 delete this.setVisible;
 delete this.getVisible;
 delete this.setZIndex;
 delete this.getZIndex;
 delete this.setBgImage;
 delete this.getBgImage;
 delete this.setBgColor;
 delete this.getBgColor;
 delete this.setHTML;
 delete this.getHTML;
 delete this.setSize ;
 delete this.setWidth;
 delete this.setHeight;
 delete this.getWidth;
 delete this.getHeight;
 delete this.getContentWidth;
 delete this.getContentHeight;
 delete this.setClip;
 delete this.getClip;
 delete this.invokeEvent;
// delete this.destroy;
};
 
Results of testing:
IE5.5
Win98 (NOT SE)
 
-with destroy
before loading site :4,392
after loading site :7,960
after unloading site:8,448
 
-without destroy
before loading site :4,420
after loading site :7,900
after unloading site:7,780
As you can see, the amount of ram INCREASED after calling deleteAllChildren with the destroy function
 
Still pluggin at it,
 
Doug Melvin
 
P.S.
I have devoted the afternoon to this problem..
So any feedback/suggestions/comments should be sent ASAP
 
 
Thank y'all

Reply via email to