Javascript und RAM Verbrauch des Browsers

PHPProgrammer

Grünschnabel
Hallo,

ich versuche zur Zeit meine Kentnisse in Javascript zu verbessern und habe zur Zeit ein Problem das der RAM Verbrauch langsam immer weiter ansteigt, solange meine Seite im Browser geoeffnet ist.

Der Code meiner Javascript Seite sieht so aus:

HTML:
<!DOCTYPE html>
<html>
<head>
<title>Testseite</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript">
"use strict";

//Variablen deklarieren
var Downloadliste_Object = new Object();
var Zaehler=0;
var ZaehlerIndex=0;
var Downloadliste_Textinhalt="";
var strurl="";
var Anzahl=0;
var str="";
var res="";
console.log("Program started");


//--check json syntax
function isJson(item) 
{
    item = typeof item !== "string"
        ? JSON.stringify(item)
        : item;

    try {
        item = JSON.parse(item);
    } catch (e) {
        return false;
    }

    if (typeof item === "object" && item !== null) {
        return true;
    }

    return false;
}




//+------------------------------------------------------------------+
//| Server Funktion                                                  |
//+------------------------------------------------------------------+
function ServerFunktion()
{
     Download();
     document.getElementById("test").innerHTML = "Zaehler "+Zaehler;

     //---- 2000 = 2 sekunden
     setTimeout(ServerFunktion, 2000);
}



//----
function Download()
{
    //--Coins in Array Object
    if(Zaehler==0)
    {
            //-- namen into Array
        Downloadliste_Textinhalt = $.ajax({ url: "Downloadliste.txt", contentType:"application/json", dataType:"json", async: false }).responseText;
        if(isJson(Downloadliste_Textinhalt)==true)
        {
                    Downloadliste_Object = JSON.parse(Downloadliste_Textinhalt);
        }//json Check
        else alert("Download Liste json synatx error");       
       
    }
    //--
    //-- PHP Datei zum downloaden der Daten aufrufen
        else if(Zaehler>1)
    {
        Anzahl=Downloadliste_Object.Name.length;
        str=Object.keys(Downloadliste_Object.Name);
        if(str.indexOf("Name")>=0)
        {
            if(Downloadliste_Object.Name[ZaehlerIndex]=="Name1")
            {
               strurl="Save_data_1.php?name="+Downloadliste_Object.Name[ZaehlerIndex];
                   res=$.ajax({ url: strurl, contentType:"application/json", dataType:"json", async: false }).responseText;
               document.getElementById("test2").innerHTML = res;
            }
            else
            if(Downloadliste_Object.Name[ZaehlerIndex]=="Name2")
            {
                  strurl="Save_data_2.php?name="+Downloadliste_Object.Name[ZaehlerIndex];
                  res=$.ajax({ url: strurl, contentType:"application/json", dataType:"json", async: false }).responseText;
              document.getElementById("test2").innerHTML = res;
            }
           
            //--Zaehler Array Index
            ZaehlerIndex++;
           
            //--Zaehler zurueck setzen
            if(ZaehlerIndex>=Anzahl)
            {
                Zaehler=0;
                ZaehlerIndex=0;
            }
        }
    }
    Zaehler++;
}
</script>
</head>
<body onload="ServerFunktion()">

<span id="test"></span>
<span id="test1"></span>
<span id="test2"></span>

</body>
</html>

Mit diesem Javascript werden Daten gedownloadet, der Download passiert innerhalb einer PHP Datei.

Damit die PHP Datei die Downloads immer wieder macht, benutze ich "setTimeout(ServerFunktion, 2000)" innerhalb meiner sogenannten "ServerFunktion" befindet sich die Javascript Funktion "Download" welche auf diese Weise alle 2 Sekunden wieder aufgerufen wird, damit die Downloads gemacht werden.

In der "Download" Funktion werden zuerst Namen aus einer Textdatei in ein Object gespeichert, diese Namen werden dann immer weiter gegeben an die PHP Datei, damit diese wweis was sie als naechstes downloaden soll.

Die Idee wie ich das aufgebaut habe, damit bin ich zufrieden, den ich erreiche damit mein Ziel, aber ich habe das Problem das der RAM Verbrauch aus irgendeinem Grund langsam immer weiter ansteigt, solange ich diese Seite im Browser geoeffnet laufen lasse.

Kann irgend jemand von euch ein Grund fuer das ansteigen des RAM Verbrauches in meinem Javascript Aufbau finden?
Vielleicht habe ich dort etwas nicht gut genug aufgebaut, was den RAM Verbrauch langsam ansteigen laest, oder ist es generell nicht moeglich mit Javascript den RAM Verbrauch des Browsers gering oder auf ein staendig gleichen Level zu halten, wenn man beispielweise mit Funktionen wie "setTimeout()" eine staendige Wiederholung erzwingt?

Sollte man vielleicht auch besser "setInterval()" benutzen statt "setTimeout()"? Aber ich vermute es wird wo anders dran liegen und ob man "setTimeout" oder "setInterval" benutzt macht bestimmt kein grosen Unterschied.

Ich habe noch ein Bild angefuegt wo man mein Task Manager sehen kann, da sind irgendwie drei verschiedene Eintraege vom Chrome Browser und einer davon steigt immer weiter an nach einiger Zeit und es geht erst dann alles wieder runter, wenn ich die Seite im Browser schliese.
 

Anhänge

  • ram.png
    ram.png
    31,1 KB · Aufrufe: 5
Hast Du irgendwelche Plugins am laufen?

Unter Chrome ruf dir mal: Untersuchen auf (rechte Maustaste auf deiner Seite)
dann klick auf "Network", wichtig dabei ist, danach deine Seite mittelts F5-Taste oder reload neu laden.

Wenn Ich mich nicht Irre, sollte es das sein :)
 
Zurück