JavaScript - Speicherproblem
André
- javascript
0 Struppi
0 André0 Struppi
0 André0 Struppi
0 Klawischnigg
0 twseiten_de0 Struppi
0 twseiten_de
Hallo,
ich versuche seit ein paar Stunden Inhalt dynamisch über:
<script>
document.writeln("<script src=myvar.txt></script>");
</script>
nachzuladen.
Es funktioniert eigentlich ganz gut. Die Seite wird refresht und der geänderte Inhalt der Datei myvar.txt wird korrekt eingebunden.
In myvar steht:
var b = "<tr><td>......";
Der Inhalt ist ziemlich groß.
Mein Problem ist, dass bei jedem Reload 1,5 MB Speicher flöten gehen. D.h. der firefox-Prozess schwillt bei jedem reload um 1,5 MB an.
Kann mir irgendwer weiterhelfen?
Danke,
André
Kann mir irgendwer weiterhelfen?
nein, mit den Informationen natürlich nicht.
Struppi.
nein, mit den Informationen natürlich nicht.
Entschuldigung, aber ich weiß nicht ganz genau an welcher Stelle ich ins Detail gehen soll. Ich hatte gehofft es könnte sich um ein allgemeines Problem handeln.
Also:
Wie schon gesagt befindet sich in der Datei eine Variable nämlich:
_a = "<tr><td>....";
Alles in einer Zeile und es ist ein sehr langer String. Die Datei ist ca. 100KB groß.
Ich möchte das nun dynamisch bei jedem reload neu mit einlesen und mache das per
<html>
<head>
<meta http-equiv="refresh" content="10">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<script type="text/javascript" language="javascript" src="myvar.txt"></script>
<script>
<!--
document.writeln(_a);
//-->
</script>
</body>
</html>
Wie gesagt, es funktioniert ja auch. Nur wächst bei jedem Einlesen über der Speicherverbrauch von Firefox um über 1MB an.
Wird denn der Inhalt der Variablen dabei nicht überschrieben? Es sieht ja so aus, als würde der "alte" Wert noch irgendwo im Speicher hängen bleiben.
Ich geben gern mehr Auskunft wenn Ihr mir sagt an welcher Stelle.
Danke und Gruß,
larrie
Wie gesagt, es funktioniert ja auch. Nur wächst bei jedem Einlesen über der Speicherverbrauch von Firefox um über 1MB an.
finde ich nicht viel bei einer 100KB grossen Variabeln sinkt er nicht mehr?
Das kann ich nicht nachvollziehen bei mir sinkt der Wert immer wieder auf den Stand vorher, mit genau einer genau 100KB grossen Datei und dem Code von dir.
Struppi.
Wie gesagt, es funktioniert ja auch. Nur wächst bei jedem Einlesen über der Speicherverbrauch von Firefox um über 1MB an.
finde ich nicht viel bei einer 100KB grossen Variabeln sinkt er nicht mehr?
Das kann ich nicht nachvollziehen bei mir sinkt der Wert immer wieder auf den Stand vorher, mit genau einer genau 100KB grossen Datei und dem Code von dir.
Danke fürs Ausprobieren. Das mich zu dem Versuch veranlasst, das Ganze auf einer anderen Maschine zu testen.
Unter Windows XP scheint es kein Problem zu sein. Allerdings frisst das Gleiche bei Windows Vista ein Loch in den Speicher.
Danke für die Hilfe!
Gruß,
André
Unter Windows XP scheint es kein Problem zu sein. Allerdings frisst das Gleiche bei Windows Vista ein Loch in den Speicher.
Stimmt ich hab hier XP, dass sind ja schön Aussichten.
Struppi.
Hi there,
Unter Windows XP scheint es kein Problem zu sein. Allerdings frisst das Gleiche bei Windows Vista ein Loch in den Speicher.
Vergiss es. Diesen halbdurchsichtigen Dreck verwendet eh bald keiner mehr. Nach einem Bericht, den ich heute gelesen haben, liefert sogar Dell wieder Rechner mit XP aus, weil's die Kunden verlangen...
Hallo,
dynamisches Laden von Script in ein Dokument setzt voraus, dass das Script geparst wird.
document.write() erzeugt einen Datenstrom in das Dokument, der geparst wird.
Je nach Datenstrominhalt wird document und seine Kinder geändert.
document.write() ist also nicht ganz "ungefährlich", besonders
bezüglich body.
Das einmalige dynamische Erzeugen eines Script-Objektes, dessen .src dann belegt (auch mehrmals) wird zum Laden der Daten, ist auch möglich: Daten werden geparst !. Scriptobjekt mit createElement() erzeugen etc..
Um Veränderungen im Dokument zu verhindern, sind die nachzuladenen Daten in ein z.B. bereits definiertes Datenobjekt zu laden (Browser muss Datenbereich allokiert bzw. reserviert bzw. berücksichtig haben).
Refresh des Dokumentes also Normalisierung des HTML-DOM wäre auch möglich: normalize-Funktion zum Objekt (object.normalize()).
Der Browser sorgt selbst für das Aufräumen von unbenötigten Datenbereichen, wobei globale Variablen rausfallen (solange nicht
mit null-Zeiger belegt sind).
Gruss Tom.
dynamisches Laden von Script in ein Dokument setzt voraus, dass das Script geparst wird.
und wie sieht das bei einem undynamischen Skript aus?
document.write() ist also nicht ganz "ungefährlich", besonders
bezüglich body.
document.write() ist eine saubere Methode um während dem laden HTML code in das Dokument einzufügen oder den Inhalt eines Fensters zu beschreiben, seit wann ist es gefährlich?
Um Veränderungen im Dokument zu verhindern, sind die nachzuladenen Daten in ein z.B. bereits definiertes Datenobjekt zu laden (Browser muss Datenbereich allokiert bzw. reserviert bzw. berücksichtig haben).
Das verstehe ich nicht. Was ist ein definiertes Datenobjekt?
Refresh des Dokumentes also Normalisierung des HTML-DOM wäre auch möglich: normalize-Funktion zum Objekt (object.normalize()).
Da muss ich zugeben, die Funktion kannte ich noch nicht, aber finde keine Seite die mir wirklich erklärt was die Funktion tut und wofür man das braucht. Ich sehe auch nicht was die Funktion mit dem Problem hier zu tun hat.
Struppi.
Hallo,
dynamisches Laden von Script in ein Dokument setzt voraus, dass das Script geparst wird.
document.write() erzeugt einen Datenstrom in das Dokument, der geparst wird.
Je nach Datenstrominhalt wird document und seine Kinder geändert.
document.write() ist also nicht ganz "ungefährlich", besonders
bezüglich body.
Das einmalige dynamische Erzeugen eines Script-Objektes, dessen .src dann belegt (auch mehrmals) wird zum Laden der Daten, ist auch möglich: Daten werden geparst !. Scriptobjekt mit createElement() erzeugen etc..
Um Veränderungen im Dokument zu verhindern, sind die nachzuladenen Daten in ein z.B. bereits definiertes Datenobjekt zu laden (Browser muss Datenbereich allokiert bzw. reserviert bzw. berücksichtig haben).
Refresh des Dokumentes also Normalisierung des HTML-DOM wäre auch möglich: normalize-Funktion zum Objekt (object.normalize()).
Der Browser sorgt selbst für das Aufräumen von unbenötigten Datenbereichen, wobei globale Variablen rausfallen (solange nicht
mit null-Zeiger belegt sind).
Gruss Tom.