2013-03-04 7 views
5

Jak mogę darmo przydzielona pamięć < płótnie > w poniższym przykładzie:bezpłatny przydzielane przez <canvas/> pamięci na przeładowanie strony

<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> 

próbowałem ustawić var płótno null (płótno = null), aby usuwać płótno (usuwanie płótno) lub do dynamicznego tworzenia płótno i dołączyć go do „dokument” root, po usunąć go w ten sposób:

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

Nic się nie zmienia, przydzielonej pamięci g ets większy i większy przy każdej pojedynczej stronie przeładowania, dopóki moja przeglądarka nie zajmie zbyt dużo pamięci RAM procesora. Czasami przeglądarka ulega awarii. Czasami odśmiecacz usuwa niektóre zmienne poza zakres. Ale pozwala na zajęcie zbyt dużej ilości pamięci. Używam wersji Chrome 25. Czy są jakieś sposoby na uwolnienie pamięci < lub sprowokowanie wczesnego wyrzucania śmieci?

Odpowiedz

-1

Czy próbowałeś usunąć operatora JavaScript?

delete canvas; 

Else można spróbować tego, że pracuje dla mnie:

canvas.parentNode.removeChild(canvas); 

Musisz upewnić się, aby usunąć wszelkie odniesienia do płótna nawet te przez DOM lub jakiegokolwiek innego obiektu, aby uniknąć pamięć przecieki.

PS: zapomniałem wspomnieć, że rozmiar płótna jest bardzo duży. Zachowaj minimalny rozmiar płótna, aby zmniejszyć zużycie pamięci i zwiększyć liczbę klatek na sekundę.

PS2: zamykając ścieżki pomogą pamięć unikając przecieki

+0

Tak Próbowałem wszystkich wymienionych rozwiązań przez Ciebie, jak można przeczytać w moim poście. Żadne z nich nie wydaje się być dla mnie niezawodne. Co rozumiesz przez "zamknięcie swoich ścieżek"? Nie rysuję animacji, więc duży rozmiar nie powoduje pogorszenia wydajności w moim przypadku. – 0xC0DEGURU

+0

Nie należy tego używać do usuwania. – Isius

Powiązane problemy