2013-03-04 8 views
5

zugeordnet Wie kann ich Speicher von <Leinwand> im folgenden Beispiel zugewiesen freie:Free von <canvas/> Speicher auf Seite neu laden

<html> 
    <head> 
    </head> 
    <body id="body"> 
    <canvas id="canvas" width=3000 height=2000/> 
    <script> 
     var canvas = document.getElementById("canvas"); 
     var ctx = canvas.getContext("2d"); 
     ctx.fillText("hao ar iu?", 20, 20); 
    </script> 
    </body> 
</html> 

I var Leinwand auf null (Leinwand = null) zu setzen versucht, zu löschen Leinwand (löschen Leinwand) oder dynamisch Leinwand zu erstellen und hängen sie ihn an die „Dokument“ root, es nach dem auf diese Weise entfernen:

<div onclick=reload()>CLICK TO RELOAD PAGE</div> 
<script> 
    function reload(){ 
    body.removeChild(canvas); 
    location.reload(); 
    } 
</script> 

Nichts ändert sich, den zugewiesenen Speicher g Ets größer und größer mit jeder einzelnen Seite neu laden, bis mein Browser zu viel CPU-RAM-Speicher belegen. Manchmal stürzt der Browser ab. Manchmal bereinigt der Garbage Collector einige der Variablen außerhalb des Bereichs. Aber es lässt zu viel Speicher belegt. Ich verwende Chrome Version 25. Gibt es irgendwelche Möglichkeiten, die <Canvas> Speicher zu befreien oder frühzeitig Garbage Collection zu provozieren?

Antwort

-1

Haben Sie versucht, den JavaScript-Operator zu löschen?

delete canvas; 

Else können Sie dies versuchen, die für mich funktioniert:

canvas.parentNode.removeChild(canvas); 

Sie müssen sicherstellen, dass jeder Bezug auf Ihre Leinwand selbst die, die durch das DOM oder jedes andere Objekt zu entfernen, um den Speicher zu vermeiden Lecks.

PS: vergessen zu erwähnen, dass Ihre Leinwand Größe ist sehr groß. Halten Sie Ihre Leinwandgröße so klein wie möglich, um den Speicherverbrauch zu reduzieren und die fps zu erhöhen.

PS2: Ihre Wege Schließen wird dazu beitragen, Speicher zu vermeiden Lecks

+0

Ja, ich habe von Ihnen alle aufgeführten Lösungen versuchen, wie Sie in meinem Beitrag lesen kann. Keiner von ihnen scheint zuverlässig für mich zu arbeiten. Was meinst du damit, "deine Wege zu schließen"? Ich zeichne keine Animation, so dass die große Größe in meinem Fall keine Leistung verursacht. – 0xC0DEGURU

+0

Das ist nicht was gelöscht werden soll für. – Isius

Verwandte Themen