Browseraktualisierung führt keine Speicherbereinigung durch

8

Ich habe das auf allen getesteten Browsern gefunden - IE, Firefox, Chrome und Safari auf Window Sand Safari auf Apple.

Angeblich sollten eine Browseraktualisierung, eine Zurück-Schaltfläche oder eine Weiterleitungsverknüpfung die Browserknoten und JavaScript-Variablen und Objekte usw. ablegen. Dies scheint für WebGL nicht der Fall zu sein. Ich habe es zuerst bemerkt, als ich eine komplexe WebGL-Anwendung entwickelte, die ungefähr 100 MB bis 200 MB Speicher benötigt. Während ich mich entwickle, muss ich viele Aktualisierungen vornehmen und mein Computer würde nach 5-10 Aktualisierungen langsamer werden und einfrieren.

Nach einigen Recherchen wurde mir klar, dass das nicht sein sollte. Die akzeptierte Lösung aus einem Speicherleck besteht darin, die Seite zu aktualisieren, wobei alle JavaScript-Objekte und Variablen und Domänenknoten freigeben soll. Aber sehen Sie sich die folgenden Bilder an:

Also, was ist der Deal hier? Bei kleinen Apps wird es nicht bemerkt, aber für große WebGL-Apps wie meine (orbitingeden.com) ist dies ein echtes Problem und meine Benutzer werden denken, dass die Software noch mehr von einer Ressource ist, als sie wirklich ist. Das folgende Bild zeigt diese Aktualisierungen, die meinen gesamten verfügbaren Speicher verschlingen, sodass die Speicherbereinigung nicht funktioniert und / oder JS- und DOM-Objekte nicht freigegeben werden:

Ссылка

Kennt jemand einen Trick, um den Browser zu zwingen, einen echten Speicherauszug zu machen? Warum ist die gesamte Dokumentation falsch?

    
Orbiting Eden 01.07.2012, 23:39
quelle

1 Antwort

2

Einer der Punkte bei der Garbage-Collection ist, dass die Objekte nicht bereinigt werden, sobald sie unbenutzt sind. Der Garbage Collector kann selbst bestimmen, wann Sammlungen am bequemsten sind.

Es ist normal für ein Garbage-Collection-System, einige ungenutzte Objekte im Heap zu belassen, solange genügend Speicher zur Verfügung steht. Ein Computer läuft nicht schneller, wenn er viel ungenutzten Speicher hat.

    
Guffa 01.07.2012 23:56
quelle