ICEfaces
  1. ICEfaces
  2. ICE-6593

Apparent client-side memory leak when using modal panelPopup with IE8

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0
    • Fix Version/s: 2.0.1
    • Component/s: Bridge, ICE-Components
    • Labels:
      None
    • Environment:
      ICEfaces 2.0, panelPopup w/ modal=true, IE8.

      Description

      Viewing a modal panelPopup in IE8 browser seems to consume a large amount of client-side memory (in the IE8 process) that is not subsequently released until the page is reloaded or navigated away from.

      To reproduce, run the compat component showcase, monitor the IE8 browser process memory consumption, then open and close the modal panelPopup repeatedly. Note that each toggling of making the popup visible and hiding it consumes approx 5-6 MB of client-side memory.

      The consumed memory doesn't seem to be recovered by IE8 until the page is navigated away from or reloaded. I tested it up to 225MB used on a 512MB system so this looks like a real issue.

      Likely related to the way that the UI blocker has to dynamically deregister and re-register the event listeners on elements behind the popup blocker.

        Activity

        Hide
        Ken Fyten added a comment -

        Testing on IE7 shows the same memory consumption while viewing modal popups, but that memory is recovered when the browser window is minimized, indicating that it is not an actual leak, but normal browser memory use that is available for reclamation by the browser when needed.

        However, my testing on IE8 did not show the memory being recovered until the page was reloaded (or closed).

        Show
        Ken Fyten added a comment - Testing on IE7 shows the same memory consumption while viewing modal popups, but that memory is recovered when the browser window is minimized, indicating that it is not an actual leak, but normal browser memory use that is available for reclamation by the browser when needed. However, my testing on IE8 did not show the memory being recovered until the page was reloaded (or closed).
        Hide
        Mircea Toma added a comment - - edited

        The callbacks used to resize dynamically the overlay registered with window.onresize and window.onscroll are not cleared after the overlay is removed from the document thus references to the iframe element are still held.
        The applied fix makes sure the callbacks are de-registered before the overlay is gone.

        Show
        Mircea Toma added a comment - - edited The callbacks used to resize dynamically the overlay registered with window.onresize and window.onscroll are not cleared after the overlay is removed from the document thus references to the iframe element are still held. The applied fix makes sure the callbacks are de-registered before the overlay is gone.
        Hide
        Ken Fyten added a comment -

        I verified this using IE8. Memory continued to increase (although perhaps 1/2 the rate it did previously). Once IE8 was using 410M in a 512MB XP system, it garbage collected and reduced it's use back down to 70MB approx., so this seems to be working.

        Show
        Ken Fyten added a comment - I verified this using IE8. Memory continued to increase (although perhaps 1/2 the rate it did previously). Once IE8 was using 410M in a 512MB XP system, it garbage collected and reduced it's use back down to 70MB approx., so this seems to be working.

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Ken Fyten
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: