Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-01-2011, 16:40   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 16
Speicherverbrauch bei großen Arrays.

Hallo zusammen,

ich glaube, ich brauche mal fachkundige Hilfe:

Ich habe eine Anwendung erstellt, die alle zehn Sekunden eine XML-Datei mit ca. 5000 Datensätzen auf Veränderungen überprüft. Dazu werden diese 5000 Einträge pro Abruf auf 5 Arrays mit jeweils 1000 Einträgen in unterschiedliche Kategorien aufgeteilt und nach einem Timestamp sortiert.

Alles funktioniert prächtig; nur nach etwa 20 Minuten wird die Anwendung sehr langsam und muss beendet werden. Laut Taskmanager ist der Arbeitsspeicherverbrauch sehr hoch und steigt in großen Schritten an, daran wird es wohl liegen.

Was kann ich da tun? Die Arrays löschen und neu zu erstellen vor jedem Durchgang bringt leider nichts. Liegt es irgendwie an den Schleifendurchgängen?

Danke & Grüße!
spam2
spam2 ist offline   Mit Zitat antworten
Alt 24-01-2011, 16:56   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Speicherst Du diese Array kontinuierlich in anderen Objekten (z.B. einem anderen Array), so dass sie dauerhaft ansprechbar sind? Wenn ja, ist es kein Wunder, dass irgendwann der RAM voll ist!

Bessere wäre es diese Daten nur temporär (z.B. in Funktionsvariablen) anzulegen bzw. die zugehörigen Referenzen nach jedem Durchlauf wieder zu löschen:
PHP-Code:
delete tempArray
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 24-01-2011, 17:29   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 16
Hallo Martin,

danke für Deine Hilfe.

Pro Durchgang wird einmal die komplette XML-Datei eingelesen, wobei die alten Daten aus dem letzten Durchgang überschrieben werden.

Per for-Schleife werden die relevanten Informationen dann auf verschiedene globale Arrays aufgeteilt, wobei auch hier die alten Daten überschrieben werden.

Gekürztes Beispiel:

PHP-Code:
readxml = function()
{
    var 
myXML = new XML();
    
myXML.load(_global.xmladresse);
    
myXML.onLoad = function(success:Boolean)
    {
        
rootKnoten myXML.firstChild;
        
_global.arraylength myXML.firstChild.childNodes.length;
        if (
success);
        {
            for (var 
0_global.arraylengthi++)
            {
                
_global.ids[i] = myXML.firstChild.childNodes[i].childNodes[1].childNodes;
                
_global.timestamps[i] = myXML.firstChild.childNodes[i].childNodes[2].childNodes;
                
_global.name[i] = myXML.firstChild.childNodes[i].childNodes[3].childNodes;
                
_global.firma[i] = myXML.firstChild.childNodes[i].childNodes[4].childNodes;
                         }
                            
        }
    }

Anschließend werden die Arrays untereinander nach Timestamp (_global.timestamps) absteigend sortiert und untereinander angeglichen. Das Ergebnis wird anschliessend am Bildschirm ausgegeben.

Ist das Vorgehen falsch?

Danke im Voraus & Gruß
spam2 ist offline   Mit Zitat antworten
Alt 24-01-2011, 17:42   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Hm seltsam...

Ist nur ne Vermutung, aber es könnte sein, das die XML-Objekte selbst nicht gelöscht werden. Schreib mal als letzte Anweisung in die onload-Prozedur:
PHP-Code:
delete this
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 24-01-2011, 19:08   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 16
Das hat leider nichts gebracht; der Verbrauch ist nach wie vor derselbe :|

In diesem Uralt-Posting ist eine ähnliche Situation beschrieben. Vielleicht kann uns das weiterhelfen?

Variablen und Speicherverbrauch
spam2 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
arbeitsspeicher, array, as2, speicherverbrauch, xml

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Flah Builder 4 - SoftwareUpdates (Speicherverbrauch und Codeüberdeckung) robidd Flex allgemein 3 03-08-2010 14:42
Speicherverbrauch reduzieren AS3 knitte Flash Einsteiger 0 14-02-2008 10:51
Variablen und Speicherverbrauch Miko55 ActionScript 1 1 25-11-2003 17:19
arrays über arrays - aber watt sind überhaupt arrays? ActionScript 1 14 29-01-2002 16:08
loadmovie und Speicherverbrauch dg76 Flash 4 und Flash 5 4 24-09-2001 13:15


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele