Kringverwijzingen naar DOM-objecten op een HTML-pagina veroorzaken een geheugenlek

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 830555
Alles uitklappen | Alles samenvouwen

Op deze pagina

Symptomen

Er treedt een geheugenlek op wanneer het vernieuwen van een HTML-pagina die wordt gebruikt Microsoft JScript-code bevat circulaire verwijzingen naar objecten in de Microsoft Internet Explorer Document objectmodel (DOM).

Oorzaak

Dit geheugenlek omdat DOM-objecten niet JScript zijn objecten. DOM-objecten zijn niet in het schema markeren sweep garbage collectie van JScript. Daarom de kringverwijzing tussen de DOM-objecten en de JScript-handlers niet worden verbroken totdat de browser volledig beneden breekt de pagina. Dit geheugenlek eindigt wanneer de browser opent een nieuwe pagina of wanneer het browservenster wordt gesloten.

Oplossing

Voor dit probleem vermijden kringverwijzingen naar Internet Explorer DOM-objecten in de Jscript-code. Om dit probleem te omzeilen in de voorbeeldcode is opgenomen in de sectie 'Meer informatie' van dit artikel, de volgende wijziging:
function hookup(element)
{
    element.attachEvent( "onmouseover", mouse);
}
function mouse () 
{
}
Met deze wijziging demuisfunctie is geen object sluiting die tot een kringverwijzing leidt.

Status

Microsoft heeft bevestigd dat dit is een fout in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Meer informatie

Stappen om het gedrag te reproduceren

  1. Plak de volgende code in Kladblok en sla het bestand Als Test.htm:
    <HTML>
    <HEAD>
    <script language="javascript">
    function initpage()
    {
    window.setTimeout("window.location.reload()", 500, "javascript");
    }
    </script>
    </HEAD>
    <body onload="initpage()" >
    <div class='menu' id='menu'></div>
    <script language='javascript'>
    hookup(document.getElementById('menu'));
    function hookup(element)
    {
    element.attachEvent( "onmouseover", mouse);
    	function mouse () 
    	{
    	}
    }
    </script>
    </body>
    </HTML>
    In deze code handler (demuisfunctie) is attacher (het genestaansluitenfunctie). Dit betekent dat de handler is afgesloten via het bereik van de beller (dit heet "sluiting"). De handler onderhoudt een verwijzing naar de variabele element. In dit geval het variabele element is dedivHTML-element met deIDparameter is ingesteld opmenu. Maar dedivelement verwijst naar de handler. Deze verwijzing is een circulaire verwijzing.
  2. Test.htm openen in Internet Explorer.

    Dat het geheugengebruik in Taakbeheer blijft toenemen wanneer de pagina vernieuwd.

Referenties

Bezoek de volgende website van Microsoft Developer Network (MSDN) voor meer informatie over Internet Explorer geheugenlek patronen:
http://msdn2.Microsoft.com/en-us/library/Bb250448.aspx

Eigenschappen

Artikel ID: 830555 - Laatste beoordeling: zaterdag 5 maart 2011 - Wijziging: 2.0
Trefwoorden: 
kbfix kbmt KB830555 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:830555
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com