| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| ... loves Japan! Registriert seit: Apr 2005 Ort: D'dorf; DE
Beiträge: 715
| Array zurücksetzen?
Wie kann man ein Array zurücksetzten, so dass es Länge 0 hat? Das Problem ist folgendes: Ich benutze ein globales Array, in das ich mittels eine Schleife Daten lade. Sagen wir 3 Daten. arrayValues[1] = "a"; arrayValues[2] = "b"; arrayValues[3] = "c"; Eine andere Funktion geht später in einer Schleife durch dieses Array und zeigt die Daten in einem Textfeld an. Wenn der Benutzer nun auf einen Movie klickt sollen andere Daten in das globale Array geladen werden. arrayValues[1] = "blah"; arrayValues[2] = "blahblah"; Das Problem ist, dass die Länge des Arrays bei diesem 2. Mal immer noch 3 ist. Also arrayValues[3] = "c"; ist immernoch da und wird angezeigt. Bei jedem Auffüllen des Arrays soll aber mit einem leeren Array begonnen werden, damit auch die Länge abgefragt werden kann. Wären immer gleich viele Daten vorhanden wäre es ja kein Problem, aber so ist es nicht.
__________________ http://www.snyderhealth.com/candida.htm |
| | |
| | #4 (permalink) |
| Freizeitflasher Registriert seit: Jun 2004 Ort: Niederösterreich
Beiträge: 615
|
da hab ich auch eine frage dazu: wenn ich jetzt ein Array habe, und es mit einem blanken überschrebe, bleiben die alten daten im Speicher vorhanden? so hab ich keinen zugriff mehr auf das erste array: ActionScript:
aber so zb schon: ActionScript:
Bleibt es jetzt auch im Speicher wenn ich keine Referenz erstelle?
__________________ Some Flash Worx |
| | |
| | #5 (permalink) | |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
| Zitat:
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ | |
| | |
| | #6 (permalink) |
| Freizeitflasher Registriert seit: Jun 2004 Ort: Niederösterreich
Beiträge: 615
|
aber wenn man ein array einer anderen variable zuweist wird es nicht kopiert. es wird nur eine referenz erstellt! ActionScript:
__________________ Some Flash Worx |
| | |
| | #8 (permalink) |
| Freizeitflasher Registriert seit: Jun 2004 Ort: Niederösterreich
Beiträge: 615
|
tja... aber ob das alte array im speicher bleibt oder nicht weiss ich immer noch nicht. btw: "You found a secret :-)"
__________________ Some Flash Worx |
| | |
| | #9 (permalink) | |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
| Zitat:
mfg. r
__________________ Ralf Bokelberg™ - Flex & Flash Consulting | |
| | |
| | #10 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
das Array bleibt solange im Speicher, bis es vom Garbage-Collector gefunden wird. Er überprüft, ob es noch Referenzen auf ein Objekt gibt, wenn nicht, dann schmeißt er es final raus. (so denke ich mir das zumindest) Sauberer wäre es, (zumindest theoretisch) wenn du das Array erst mit ActionScript:
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #11 (permalink) |
| Freizeitflasher Registriert seit: Jun 2004 Ort: Niederösterreich
Beiträge: 615
|
danke! gört sich interessant an. wann läuft der garbage collector?
__________________ Some Flash Worx |
| | |
| | #12 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.321
|
garbage collecton wird vom betriebssystem ausgeführt (und nicht von java oder Pascal oder sonst wem). manche programmiersprachen c++ z.b. können diesen vorgang starten. war früher wichtiger, als man noch rechner mit 48KByte hauptspeicher hatte ;-))) eine variable wird angelegt, das betriebssystem reserviert dafür speicher. beim löschen entstehen löcher, in die die neuen variablen nicht immer reinpassen (defragmentierung). irgendwann sagt sich des betriebssystem: 'jetzt is aber gut' und schiebt den ganzen speicherplatz zusammen.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (22-07-2005 um 19:08 Uhr) |
| | |
| | #13 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Immer nebenher, dachte ich, aber da musst du mal suchen, wenn es dich interessiert, ich glaube die Idee kommt von Java, wenn es ähnlich wie dort ist, wirst du viele Informationen finden.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #14 (permalink) | |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
| Zitat:
Wenn du Flash 7 und davor benutzt, kannst du den Speicher vollmüllen, bis es nicht mehr geht, und dann erst läuft der GC. Das führt dann u.U. dazu, dass deine Animationen beginnen zu ruckeln, weil der GC natürlich auch einen Haufen Rechenzeit benötigt. Beim nächsten Flashplayer 8 soll dieser Effekt weniger stark in Erscheinung treten. Zum Teil haben sie den GC selbst wohl optimiert und zum Teil wird er wahrscheinlich einfach öfter mal aufgeruen und muss dann nicht soviel auf einmal erledigen. @hgseib: Das Betriebssystem hat zwar auch eine Speicherverwaltung, aber die hat nur indirekt etwas mit dem Flashplayer zu tun. mfg. r
__________________ Ralf Bokelberg™ - Flex & Flash Consulting Geändert von bokel (22-07-2005 um 22:51 Uhr) | |
| | |
| | #15 (permalink) |
| Gast
Beiträge: n/a
|
hm, is jetzt zwar n bisel offtopic, aber wo ich das gerade lese drängt sich mir ne frage auf: der garbage collector löscht je die variablen/objekte (gibt den speicherplatz frei) auf die nicht mehr verwiesen wird. jetzt stelle man sich mal vor, da sind zwei objecte, die sich gegenseitig referenzieren, aber keine referenz von aussen auf sie zeigt, ich also auch keine möglichkeit mehr habe, auf sie zuzugreifen. werden die auch "beseitigt"? oder enden die als "karteileichen"? (jetzt nicht speziell as, eher java würd mich interesieren) praktische relevanz: wenn ich z.b. bei doppelt verketteten listen einfach die referenz auf das erste objekt lösche, wird sie dann ganz gelöscht? bei einfach verketteten ist das ja klar, aber die doppelten.... na ja, würd mich einfach mal interesieren, falls da jemand ahnung hat.. |
|
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |