yes...  again, I've never played with this, so don't know if it's good info or not, but might be worth a shot.  From a pure logic standpoint, setting an object (such as a dynlayer) equal to null should have the effect of "wiping out" all of it's methods and properties (effectively freeing the memory addresses where they reside).  Given the problems with IE, however, I doubt it would be this easy.  I also suspect much of the memory problems reside OUTSIDE of the javascript code, and rather lie with the memory used by the browser itself to handle and render the layers.  Now if we could find a way to get at the underlying browser code, we'd probably have all sorts of success (I suspect IE is written in C++... having played around a little bit in that language, I know that memory management is very much in the hands of the developer, and if the developer is not paying attention...)  Anyway, best of luck.
 
[Jack_Speranza] 
 
 -----Original Message-----
From: Doug Melvin [mailto:[EMAIL PROTECTED]]
Sent: Friday, February 02, 2001 5:21 PM
To: [EMAIL PROTECTED]
Subject: Re: [Dynapi-Help] destory()

by re-instantiating you mean re-declaring the item?
such as
this.addChild()=function(){}; // re-declare as empty function
this.addChild=null;  
 
?
Doug
----- Original Message -----
Sent: Friday, February 02, 2001 11:18 AM
Subject: RE: [Dynapi-Help] destory()

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