Opened 12 years ago

Closed 12 years ago

#4047 closed defect (fixed)

IE6 slowdown, memory leak

Reported by: bill Owned by: bill
Priority: high Milestone: 0.9
Component: Dijit Version: 0.9
Keywords: Cc:
Blocked By: Blocking:

Description

Every time you reload themeTester.html IE6's memory usage goes up 10M, and it takes 4s longer to parse the page then before.

Attachments (1)

_Widget.patch (1.1 KB) - added by guest 12 years ago.

Download all attachments as: .zip

Change History (8)

comment:1 Changed 12 years ago by bill

Component: GeneralDijit
Milestone: 0.9
Owner: changed from anonymous to bill

comment:2 Changed 12 years ago by bill

Problem goes away if you remove the destroyRendering() call from Widget.destroy(), thus leaving the widgets in the document making it easier for IE to garbage collect.

But, the ability to dynamically create/destroy widgets (including their dom nodes) is important for long running apps like yahoo mail.

Will try tracking all dojoAttachPoints and deleting them on widget destruction. dojoAttachEvent calls are already being released...

comment:3 Changed 12 years ago by bill

Resolution: fixed
Status: newclosed

(In [10049]) Remove references from widget (JS object) to the DOM nodes in the widget before destroying the DOM nodes, to fix IE6 memory leak. Fixes #4047

comment:4 Changed 12 years ago by bill

Resolution: fixed
Status: closedreopened

Hmm, didn't work...

comment:5 Changed 12 years ago by guest

Attached a patch to remove dojo.forEach calls with inline functions. Function setup and tear down is expensive in tight loops. If we aren't gaining code reuse, dojo.disconnect for example, I would suggest removing inlined forEach calls.

schallm

Changed 12 years ago by guest

Attachment: _Widget.patch added

comment:6 Changed 12 years ago by bill

(In [10064]) Revert last change to track attach points. Didn't really make sense. Refs #4047.

comment:7 Changed 12 years ago by bill

Resolution: fixed
Status: reopenedclosed

(In [10065]) Second try to fix memory leak on IE6. Never give a DOM node a pointer to a widget (creates circular references). Fixes #4047.

Note: See TracTickets for help on using tickets.