Loading ...
Sorry, an error occurred while loading the content.

Re: Dialog create and destroy on same page causes memory leak in IE

Expand Messages
  • jamoville
    WOW - no response to this. It gives me the feeling that there is a serious problem with the dialog implementation. I hope not - but this issue seems to make
    Message 1 of 5 , Mar 1, 2007
    • 0 Attachment
      WOW - no response to this. It gives me the feeling that there is a
      serious problem with the dialog implementation. I hope not - but
      this issue seems to make the yahoo ui dialog almost if not completely
      useless with IE- Did I indicate that this is a problem with ie 7 and
      with the yahoo 12 version also.


      --- In ydn-javascript@yahoogroups.com, "jamoville"
      <john.hutchinson@...> wrote:
      >
      > Using 2.2 of the UI.
      >
      > I've created a simple page that onload will create then destroy a
      > dialog
      > 100 times. In IE 6 the memory increases a lot but with Firefox
      there
      > is no
      > problem. I've attached a file that once loaded will run the test.
      It
      > also
      > has two buttons to manually create and destroy the dialogs if
      > needed.
      >
      > Any reason for this? I assumed that destroy would completely clean
      > things
      > up for the dialog.
      >
      >
      > The following text is the test page:
      >
      > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
      > 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
      > <html>
      > <head>
      > <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
      > <script type="text/javascript"
      > src="../../../build/yahoo/yahoo-min.js"></script>
      > <script type="text/javascript"
      > src="../../../build/event/event-min.js" ></script>
      > <script type="text/javascript"
      > src="../../../build/dom/dom-min.js" ></script>
      > <script type="text/javascript"
      > src="../../../build/dragdrop/dragdrop-min.js" ></script>
      >
      > <script type="text/javascript"
      > src="../../../build/container/container.js"></script>
      > <link type="text/css" rel="stylesheet"
      > href="../../../build/container/assets/container.css">
      >
      >
      > <script>
      > var testDialog = null;
      > function createDialog() {
      >
      >
      > // Instantiate the Dialog
      > testDialog = new
      > YAHOO.widget.Dialog("dialog1",
      > {
      > fixedcenter : false,
      > close:true,
      > visible :
      > true,
      >
      > constraintoviewport : false
      > } );
      >
      > testDialog.setHeader("The is
      > a header...");
      > testDialog.setBody( "This is
      > a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      >
      > "This is a bogus string representing data in the dialog<BR>"+
      >
      > "This is a bogus string representing data in the
      > dialog<BR>");
      >
      > // Creating a method to
      > clean up the dialog when it is hidden
      > var hideDialog = function(){
      > testDialog.cancel();
      > testDialog.destroy();
      > testDialog = null;
      > }
      >
      > // Subscribe to the hide and
      > render the dialog
      >
      > testDialog.hideEvent.subscribe(hideDialog);
      > testDialog.render
      > (document.body);
      > testDialog.show();
      >
      >
      > }
      >
      > var killDialog = function(){
      > if (testDialog)
      > testDialog.hide();
      > }
      >
      > var runDialogTest = function(){
      > for (var i=0; i<100; i++){
      > createDialog();
      > killDialog();
      > }
      > }
      >
      > YAHOO.util.Event.addListener
      > (window, "load", runDialogTest);
      > </script>
      >
      > </head>
      > <body>
      > <p>This page is running a test that will create 100
      > dialogs. Each dialog is <br>
      > created and then destroyed. The same test can
      > manually be done by clicking the <br>
      > create dialog button and destroy dialog button over
      > and over.<BR><br>
      > <p>The behavior in IE (version 6 is what I used)
      > shows the memory increasing but never<br>
      > being released. If the page is refreshed
      > the memory is released. Eventually the <br>
      > the memory will cause IE to no longer
      > respond!! BAD! - Is there something I may simply <br>
      > be missing which is needed to clean up the
      > memory. Firefox doesn't have this issue.<br><br>
      >
      > <button onclick="javascript:createDialog();">Create
      > Dialog</button>
      > <button onclick="javascript:killDialog();">Destroy
      > Dialog</button>
      > </body>
      > </html>
      >
    • Todd Kloots
      jamoville - Not the case. This has just been a very busy week for me and I haven t had time to look into it yet. It is on my list of things to do for
      Message 2 of 5 , Mar 2, 2007
      • 0 Attachment
        "jamoville" -

        Not the case. This has just been a very busy week for me and I haven't had time to look into it yet. It is on my list of things to do for today, so I will get back to you.

        - Todd

        ----- Original Message ----
        From: jamoville <john.hutchinson@...>
        To: ydn-javascript@yahoogroups.com
        Sent: Thursday, March 1, 2007 8:00:50 PM
        Subject: [ydn-javascript] Re: Dialog create and destroy on same page causes memory leak in IE

        WOW - no response to this. It gives me the feeling that there is a
        serious problem with the dialog implementation. I hope not - but
        this issue seems to make the yahoo ui dialog almost if not completely
        useless with IE- Did I indicate that this is a problem with ie 7 and
        with the yahoo 12 version also.


        --- In ydn-javascript@yahoogroups.com, "jamoville"
        <john.hutchinson@...> wrote:
        >
        > Using 2.2 of the UI.
        >
        > I've created a simple page that onload will create then destroy a
        > dialog
        > 100 times. In IE 6 the memory increases a lot but with Firefox
        there
        > is no
        > problem. I've attached a file that once loaded will run the test.
        It
        > also
        > has two buttons to manually create and destroy the dialogs if
        > needed.
        >
        > Any reason for this? I assumed that destroy would completely clean
        > things
        > up for the dialog.
        >
        >
        > The following text is the test page:
        >
        > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
        > 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
        > <html>
        > <head>
        > <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        > <script type="text/javascript"
        > src="../../../build/yahoo/yahoo-min.js"></script>
        > <script type="text/javascript"
        > src="../../../build/event/event-min.js" ></script>
        > <script type="text/javascript"
        > src="../../../build/dom/dom-min.js" ></script>
        > <script type="text/javascript"
        > src="../../../build/dragdrop/dragdrop-min.js" ></script>
        >
        > <script type="text/javascript"
        > src="../../../build/container/container.js"></script>
        > <link type="text/css" rel="stylesheet"
        > href="../../../build/container/assets/container.css">
        >
        >
        > <script>
        > var testDialog = null;
        > function createDialog() {
        >
        >
        > // Instantiate the Dialog
        > testDialog = new
        > YAHOO.widget.Dialog("dialog1",
        > {
        > fixedcenter : false,
        > close:true,
        > visible :
        > true,
        >
        > constraintoviewport : false
        > } );
        >
        > testDialog.setHeader("The is
        > a header...");
        > testDialog.setBody( "This is
        > a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        >
        > "This is a bogus string representing data in the dialog<BR>"+
        >
        > "This is a bogus string representing data in the
        > dialog<BR>");
        >
        > // Creating a method to
        > clean up the dialog when it is hidden
        > var hideDialog = function(){
        > testDialog.cancel();
        > testDialog.destroy();
        > testDialog = null;
        > }
        >
        > // Subscribe to the hide and
        > render the dialog
        >
        > testDialog.hideEvent.subscribe(hideDialog);
        > testDialog.render
        > (document.body);
        > testDialog.show();
        >
        >
        > }
        >
        > var killDialog = function(){
        > if (testDialog)
        > testDialog.hide();
        > }
        >
        > var runDialogTest = function(){
        > for (var i=0; i<100; i++){
        > createDialog();
        > killDialog();
        > }
        > }
        >
        > YAHOO.util.Event.addListener
        > (window, "load", runDialogTest);
        > </script>
        >
        > </head>
        > <body>
        > <p>This page is running a test that will create 100
        > dialogs. Each dialog is <br>
        > created and then destroyed. The same test can
        > manually be done by clicking the <br>
        > create dialog button and destroy dialog button over
        > and over.<BR><br>
        > <p>The behavior in IE (version 6 is what I used)
        > shows the memory increasing but never<br>
        > being released. If the page is refreshed
        > the memory is released. Eventually the <br>
        > the memory will cause IE to no longer
        > respond!! BAD! - Is there something I may simply <br>
        > be missing which is needed to clean up the
        > memory. Firefox doesn't have this issue.<br><br>
        >
        > <button onclick="javascript:createDialog();">Create
        > Dialog</button>
        > <button onclick="javascript:killDialog();">Destroy
        > Dialog</button>
        > </body>
        > </html>
        >






        Yahoo! Groups Links
      • Todd Kloots
        The following file demonstrates how to apply a patch that fixes the reported memory leaks for Dialog and Panel in IE:
        Message 3 of 5 , Mar 2, 2007
        • 0 Attachment
          The following file demonstrates how to apply a patch that fixes the reported memory leaks for Dialog and Panel in IE:

          http://yuiblog.com/sandbox/yui/v220/examples/container/example03.php

          - Todd

          ----- Original Message ----
          From: jamoville <john.hutchinson@...>
          To: ydn-javascript@yahoogroups.com
          Sent: Thursday, March 1, 2007 8:00:50 PM
          Subject: [ydn-javascript] Re: Dialog create and destroy on same page causes memory leak in IE

          WOW - no response to this. It gives me the feeling that there is a
          serious problem with the dialog implementation. I hope not - but
          this issue seems to make the yahoo ui dialog almost if not completely
          useless with IE- Did I indicate that this is a problem with ie 7 and
          with the yahoo 12 version also.


          --- In ydn-javascript@yahoogroups.com, "jamoville"
          <john.hutchinson@...> wrote:
          >
          > Using 2.2 of the UI.
          >
          > I've created a simple page that onload will create then destroy a
          > dialog
          > 100 times. In IE 6 the memory increases a lot but with Firefox
          there
          > is no
          > problem. I've attached a file that once loaded will run the test.
          It
          > also
          > has two buttons to manually create and destroy the dialogs if
          > needed.
          >
          > Any reason for this? I assumed that destroy would completely clean
          > things
          > up for the dialog.
          >
          >
          > The following text is the test page:
          >
          > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
          > 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
          > <html>
          > <head>
          > <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
          > <script type="text/javascript"
          > src="../../../build/yahoo/yahoo-min.js"></script>
          > <script type="text/javascript"
          > src="../../../build/event/event-min.js" ></script>
          > <script type="text/javascript"
          > src="../../../build/dom/dom-min.js" ></script>
          > <script type="text/javascript"
          > src="../../../build/dragdrop/dragdrop-min.js" ></script>
          >
          > <script type="text/javascript"
          > src="../../../build/container/container.js"></script>
          > <link type="text/css" rel="stylesheet"
          > href="../../../build/container/assets/container.css">
          >
          >
          > <script>
          > var testDialog = null;
          > function createDialog() {
          >
          >
          > // Instantiate the Dialog
          > testDialog = new
          > YAHOO.widget.Dialog("dialog1",
          > {
          > fixedcenter : false,
          > close:true,
          > visible :
          > true,
          >
          > constraintoviewport : false
          > } );
          >
          > testDialog.setHeader("The is
          > a header...");
          > testDialog.setBody( "This is
          > a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          >
          > "This is a bogus string representing data in the dialog<BR>"+
          >
          > "This is a bogus string representing data in the
          > dialog<BR>");
          >
          > // Creating a method to
          > clean up the dialog when it is hidden
          > var hideDialog = function(){
          > testDialog.cancel();
          > testDialog.destroy();
          > testDialog = null;
          > }
          >
          > // Subscribe to the hide and
          > render the dialog
          >
          > testDialog.hideEvent.subscribe(hideDialog);
          > testDialog.render
          > (document.body);
          > testDialog.show();
          >
          >
          > }
          >
          > var killDialog = function(){
          > if (testDialog)
          > testDialog.hide();
          > }
          >
          > var runDialogTest = function(){
          > for (var i=0; i<100; i++){
          > createDialog();
          > killDialog();
          > }
          > }
          >
          > YAHOO.util.Event.addListener
          > (window, "load", runDialogTest);
          > </script>
          >
          > </head>
          > <body>
          > <p>This page is running a test that will create 100
          > dialogs. Each dialog is <br>
          > created and then destroyed. The same test can
          > manually be done by clicking the <br>
          > create dialog button and destroy dialog button over
          > and over.<BR><br>
          > <p>The behavior in IE (version 6 is what I used)
          > shows the memory increasing but never<br>
          > being released. If the page is refreshed
          > the memory is released. Eventually the <br>
          > the memory will cause IE to no longer
          > respond!! BAD! - Is there something I may simply <br>
          > be missing which is needed to clean up the
          > memory. Firefox doesn't have this issue.<br><br>
          >
          > <button onclick="javascript:createDialog();">Create
          > Dialog</button>
          > <button onclick="javascript:killDialog();">Destroy
          > Dialog</button>
          > </body>
          > </html>
          >






          Yahoo! Groups Links
        • jamoville
          Like a charm - The fix works great. Thanks for the help ... page causes memory leak in IE ... completely ... and ... clean
          Message 4 of 5 , Mar 3, 2007
          • 0 Attachment
            Like a charm - The fix works great. Thanks for the help


            --- In ydn-javascript@yahoogroups.com, Todd Kloots <kloots@...> wrote:
            >
            > The following file demonstrates how to apply a patch that fixes the
            reported memory leaks for Dialog and Panel in IE:
            >
            > http://yuiblog.com/sandbox/yui/v220/examples/container/example03.php
            >
            > - Todd
            >
            > ----- Original Message ----
            > From: jamoville <john.hutchinson@...>
            > To: ydn-javascript@yahoogroups.com
            > Sent: Thursday, March 1, 2007 8:00:50 PM
            > Subject: [ydn-javascript] Re: Dialog create and destroy on same
            page causes memory leak in IE
            >
            > WOW - no response to this. It gives me the feeling that there is a
            > serious problem with the dialog implementation. I hope not - but
            > this issue seems to make the yahoo ui dialog almost if not
            completely
            > useless with IE- Did I indicate that this is a problem with ie 7
            and
            > with the yahoo 12 version also.
            >
            >
            > --- In ydn-javascript@yahoogroups.com, "jamoville"
            > <john.hutchinson@> wrote:
            > >
            > > Using 2.2 of the UI.
            > >
            > > I've created a simple page that onload will create then destroy a
            > > dialog
            > > 100 times. In IE 6 the memory increases a lot but with Firefox
            > there
            > > is no
            > > problem. I've attached a file that once loaded will run the test.
            > It
            > > also
            > > has two buttons to manually create and destroy the dialogs if
            > > needed.
            > >
            > > Any reason for this? I assumed that destroy would completely
            clean
            > > things
            > > up for the dialog.
            > >
            > >
            > > The following text is the test page:
            > >
            > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
            > > 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
            > > <html>
            > > <head>
            > > <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
            > > <script type="text/javascript"
            > > src="../../../build/yahoo/yahoo-min.js"></script>
            > > <script type="text/javascript"
            > > src="../../../build/event/event-min.js" ></script>
            > > <script type="text/javascript"
            > > src="../../../build/dom/dom-min.js" ></script>
            > > <script type="text/javascript"
            > > src="../../../build/dragdrop/dragdrop-min.js" ></script>
            > >
            > > <script type="text/javascript"
            > > src="../../../build/container/container.js"></script>
            > > <link type="text/css" rel="stylesheet"
            > > href="../../../build/container/assets/container.css">
            > >
            > >
            > > <script>
            > > var testDialog = null;
            > > function createDialog() {
            > >
            > >
            > > // Instantiate the Dialog
            > > testDialog = new
            > > YAHOO.widget.Dialog("dialog1",
            > > {
            > > fixedcenter : false,
            > > close:true,
            > > visible :
            > > true,
            > >
            > > constraintoviewport : false
            > > } );
            > >
            > > testDialog.setHeader("The is
            > > a header...");
            > > testDialog.setBody( "This is
            > > a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > >
            > > "This is a bogus string representing data in the dialog<BR>"+
            > >
            > > "This is a bogus string representing data in the
            > > dialog<BR>");
            > >
            > > // Creating a method to
            > > clean up the dialog when it is hidden
            > > var hideDialog = function(){
            > > testDialog.cancel();
            > > testDialog.destroy();
            > > testDialog = null;
            > > }
            > >
            > > // Subscribe to the hide and
            > > render the dialog
            > >
            > > testDialog.hideEvent.subscribe(hideDialog);
            > > testDialog.render
            > > (document.body);
            > > testDialog.show();
            > >
            > >
            > > }
            > >
            > > var killDialog = function(){
            > > if (testDialog)
            > > testDialog.hide();
            > > }
            > >
            > > var runDialogTest = function(){
            > > for (var i=0; i<100; i++){
            > > createDialog();
            > > killDialog();
            > > }
            > > }
            > >
            > > YAHOO.util.Event.addListener
            > > (window, "load", runDialogTest);
            > > </script>
            > >
            > > </head>
            > > <body>
            > > <p>This page is running a test that will create 100
            > > dialogs. Each dialog is <br>
            > > created and then destroyed. The same test can
            > > manually be done by clicking the <br>
            > > create dialog button and destroy dialog button over
            > > and over.<BR><br>
            > > <p>The behavior in IE (version 6 is what I used)
            > > shows the memory increasing but never<br>
            > > being released. If the page is refreshed
            > > the memory is released. Eventually the <br>
            > > the memory will cause IE to no longer
            > > respond!! BAD! - Is there something I may simply <br>
            > > be missing which is needed to clean up the
            > > memory. Firefox doesn't have this issue.<br><br>
            > >
            > > <button onclick="javascript:createDialog();">Create
            > > Dialog</button>
            > > <button onclick="javascript:killDialog();">Destroy
            > > Dialog</button>
            > > </body>
            > > </html>
            > >
            >
            >
            >
            >
            >
            >
            > Yahoo! Groups Links
            >
          Your message has been successfully submitted and would be delivered to recipients shortly.