Registrierung
Linkliste Second Forum Chat Second Forum Treffen Suche Mitgliederliste Häufig gestellte Fragen Gästebuch Kalender

 
Amazonien Rollenspiel in SL
 

Hier kann man sich über die letzten Beiträge im Board live informieren, das kleine Fenster welches sich durch einen Klick öffnet aktualisiert sich von alleine alle 60 Sekunden.

Guckloch öffnen
 

Second Forum - Ein deutschsprachiges Forum zu Second Life » Support zu Second Life » Fragen zu Scripting in Second Life » llGetFreeMemory() » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen


Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen llGetFreeMemory()
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »

Miro Muni
Scripter/Builder


[meine Galerie]


Dabei seit: 01.01.2008
Beiträge: 92
SL Nick: Miro Muni

llGetFreeMemory() 30.01.2013 14:33 [OPTIONEN] [HOCH] [RUNTER]

Hallo,

ich habe ein Script, dass nach und nach bestimmte Werte in eine Liste schreibt. Dadurch wird der zur Verfügung stehende freie Speicher dieses Scripts natürlich immer kleiner.

Um einen Heap/Stack Fehler zu verneiden lasse ich nach jedem Speichervorgang den Speicherplatz mit llGetFreeMemory() überprüfen.
Falls er kleiner wird als ein bestimmter Sicherheitsbetrag sollen Listeneinträgen, beginnend mit den ältesten, gelöscht werden.

Ich habe verschiedenej Tests gemacht und dabei festgestellt, dass die Löschung nach Unterschreitung des Sicherheitsbetrages anfängt - aber NICHT MEHR AUFHÖRT, weil sich der mit llGetFreeMemory() ermittelte freie Spceicher trotz Löschungn nicht mehr verändert. Damit läuft der Löschvorgang, bis die Liste leer ist... nicht ganz das, was ich wollte :-)

Das Problem ist, das anscheinend trotz Löschen der Listeneinträge der Speicherplatz nicht mehr freigegeben wird. Kann es sein, dass belegter Speicher nur immer grösser werden kann aber totz Löschung von z.B. Listeneinträgen nicht mehr freigegeben wird??

Das wäre ziemlich katastrophal, weil dann Scripte gnadenlos in den Fehler laufen würden, mal früher mal später, je nach Speichernutzung.


Hat da jemand Erfahrungen?

Danke und Grüsse
Miro

__________________
http://slurl.com/secondlife/Quoll/160/24/95

Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Miro Muni am 30.01.2013 um 14:33 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Wolwaner Jervil Wolwaner Jervil ist männlich
SL Guided Tours


images/avatars/avatar-1287.jpg

[meine Galerie]


Dabei seit: 15.11.2007
Beiträge: 1.403
SL Nick: Wolwaner Jervil
Second Life Geburtstag: 01.12.2006
Fähigkeiten: Prims - Sonstiges; Texturen - Sonstiges; Scripting - Sonstiges; Sonstiges - Fotographie

31.01.2013 15:16 [OPTIONEN] [HOCH] [RUNTER]

Ich bin zwar mit diesen Interna's nicht vertraut, aber bei anderen Programmiersprachen wurde Listen immer weiter aufgefüllt und der Speicherplatz nicht freigegeben, weil man ja auch eine bestimmte Position in einer Liste ansprechen kann und daher die "Durchnummerierung" erhalten bleiben muss.

Versuche mal 2 oder mehr Listen zu machen und setze bei erreichen des Limits die älteste Liste auf leer oder einen einzelnen Eintrag - eventuell hilft das, diese Bereiche dann frei zu geben.

Alternativ wäre die Variante eine Liste mit einer bestimmten Anzahl dann von vorne weg wieder neu zu nutzen.

Würde mich interessieren, das selbst zu versuchen, bin aber diese Woche mit Turnier in RL verplant.

__________________
Wol
SL Guided Tours - Wir zeigen Euch SecondLife
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Wolwaner Jervil am 31.01.2013 um 15:16 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Miro Muni
Scripter/Builder


[meine Galerie]


Dabei seit: 01.01.2008
Beiträge: 92
SL Nick: Miro Muni

Themenstarter Thema begonnen von Miro Muni
31.01.2013 22:04 [OPTIONEN] [HOCH] [RUNTER]

Hallo,
ja, es bleibt spannend....

Du schreibst:
"weil man ja auch eine bestimmte Position in einer Liste ansprechen kann und daher die "Durchnummerierung" erhalten bleiben muss. "

Nö, muss man eigentlich nicht. Die Position eines bestimmten EIntargs kann man problemlos suchen und gerade bei Listen, deren Länge verändert werden soll, ist das auch notwendig. Wenn ich also Eintrag 1-10 wegen Speichermangel lösche darf Eintrag 11 ruhig danch der erste Eintrag werden, Hauptdsache der Platz, den 1-10 bis dahin belegt hat, wird wieder freigegeben - wird er aber nicht... soweit habe ich das bis jetzt rausgefunden.

Erst durch einen Reset wird ALLES freigegeben, dann istz aber auch ALLES weg...

Es scheint also nur den Ausweg mit einer festen Listenlänge zu bleiben, die einmal gefüllt und dann nach und nach wieder überschrieben wird. Nicht schön aber sollte funktionieren. Deutlicher Nachteil: Man muss die Länger der einzelnen Einträge im Voraus kennen, um die Anzahl der Gesamteinträge zu kalkulieren. Verändert sich die Länge geht auch diese Methode nicht mehr.

Bei Listen gab es auch in anderen Sprachen schon das Problem, das bei der Löschung von Einzeleinträgen ddie gesamtlänge erhalten bleibt, weil die Lücken bestehen bleiben.
Meist wird an eine wilde Indizierung benutzt, um die Einträge zu finden. Erst eine Bereinigung schreibt dann alles wieder sauber hintereinander und gibt alles frei, was nicht mehr benutzt wird.

Was SL Script eindeutig fehlt ist eine Garbage Collection oder sowas, d.h. Speeicher, der aktuell nicht mehr belegt wird, wird wieder freigegeben und steht dann erneut zur Verfügung. So einen Befehl gibt es aber nicht.

Deshakb bezweifle ich auch, dass das Splitting in meherer Listen heflen wird. Euch bei diesen Einzellisten bleibt das Problem grundsätzlich gleich.

Eine echte dynamische Lösung dürfte vermutlich deshakb nur über externe Server + PHP oder dergl. zu machen sein.

Grüsse
Miro

__________________
http://slurl.com/secondlife/Quoll/160/24/95

Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Miro Muni am 31.01.2013 um 22:04 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Wolwaner Jervil Wolwaner Jervil ist männlich
SL Guided Tours


images/avatars/avatar-1287.jpg

[meine Galerie]


Dabei seit: 15.11.2007
Beiträge: 1.403
SL Nick: Wolwaner Jervil
Second Life Geburtstag: 01.12.2006
Fähigkeiten: Prims - Sonstiges; Texturen - Sonstiges; Scripting - Sonstiges; Sonstiges - Fotographie

01.02.2013 08:58 [OPTIONEN] [HOCH] [RUNTER]

a) Positionen: Wenn ich eine Liste fülle und mir aus Performance-Gründen die Position mekre, muss die schon immer gleich bleiben.

aber b) Dynamik.
Hast du eigentlich schon - fülle die Liste bis zu einem bestimmten Speicher-%satz an und fange danach an, sie wieder von vorne zu überschreiben. Vielleicht machts das besser, hat aber bei unterschiedlichen Längen der Einträge auch seine Probleme.

Garbage Collector geht doch auf Objekte los, die nicht mehr referenziert sind.
Und ich denke mal, die Liste als solche ist ein Objekt das allerdings nie freigegeben wird. Damit sind auch leere Objekte wie die Einträge referenziert und bleiben erhalten.
Das könnte allerdings aufgehoben werden, wenn ich die Liste neu initialisiere mit Liste=[eintrag]. Dann wären ja alle angehängten Objekte frei gemacht.
Bleibt noch die Frage, wie schnell die Garbage collection läuft (wenn überhaupt).

Wird noch interessant, so was nachzuvollziehen wenn ich wieder Zeit habe.

__________________
Wol
SL Guided Tours - Wir zeigen Euch SecondLife
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Wolwaner Jervil am 01.02.2013 um 08:58 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Miro Muni
Scripter/Builder


[meine Galerie]


Dabei seit: 01.01.2008
Beiträge: 92
SL Nick: Miro Muni

Themenstarter Thema begonnen von Miro Muni
01.02.2013 09:11 [OPTIONEN] [HOCH] [RUNTER]

Zitat:
Wird noch interessant, so was nachzuvollziehen


genau, ich bastle auch noch....
schade, das wir von SL nicht ausführlichere Infos dazu bekommen.

:-))

__________________
http://slurl.com/secondlife/Quoll/160/24/95

Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Miro Muni am 01.02.2013 um 09:11 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Wolwaner Jervil Wolwaner Jervil ist männlich
SL Guided Tours


images/avatars/avatar-1287.jpg

[meine Galerie]


Dabei seit: 15.11.2007
Beiträge: 1.403
SL Nick: Wolwaner Jervil
Second Life Geburtstag: 01.12.2006
Fähigkeiten: Prims - Sonstiges; Texturen - Sonstiges; Scripting - Sonstiges; Sonstiges - Fotographie

01.02.2013 10:52 [OPTIONEN] [HOCH] [RUNTER]

Das kenne ich noch von meiner eigenen Entwicklerzeit.
Nur das Minimum wird dokumentiert weil
1) weniger Fehler in der Doku - Fehlerbehebung ist teuer
2) weniger Mühe bei Erweiterungen - was nicht genau beschrieben ist, kann man auch ändern
3) weniger Chance für andere, das nachzuvollziehen - auch eine Art des Schutzes.

Nächste Woche sollte meine Turniersaison wieder Pause machen, dann sehe ich mir das mal an. Bin mit Programmen ohnehin im Rückstand, aber ein lange gehegter Traum wird ab heute Wirklichkeit.

__________________
Wol
SL Guided Tours - Wir zeigen Euch SecondLife
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Wolwaner Jervil am 01.02.2013 um 10:52 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Wolwaner Jervil Wolwaner Jervil ist männlich
SL Guided Tours


images/avatars/avatar-1287.jpg

[meine Galerie]


Dabei seit: 15.11.2007
Beiträge: 1.403
SL Nick: Wolwaner Jervil
Second Life Geburtstag: 01.12.2006
Fähigkeiten: Prims - Sonstiges; Texturen - Sonstiges; Scripting - Sonstiges; Sonstiges - Fotographie

09.02.2013 09:41 [OPTIONEN] [HOCH] [RUNTER]

So, jetzt mal ein paar Versuche gestart, gesucht und gefunden.....
... dass alles verwirrend ist mit den Listen und der Memory.

llGetFreememory() zeigt immer nur das Minimum an, d.h. auch wenn was freigegeben wird, sieht man es da nicht.
llGetUsedMemory() scheint einen aktuellen Wert anzuzeigen - und der ändert sich auch wenn man aus einer Liste was löscht.

Und dann hab ich noch einige Auskünfte gefunden: http://208.74.205.111/t5/LSL-Scripting/D...ory/td-p/994287

Es gibt offenbar eine Garbage collection unter diversen Umständen.

Mein Test script:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
list mm;
integer i;
default
{
    state_entry()
    {
        llSay(0,"Start");
        llSay(0,(string) llGetUsedMemory());
        llSay(0,(string) llGetFreeMemory());
    }

    touch_start(integer total_number)
    {
        for (i=500;i>0;i--) {
            mm+="testeintrag für ein array"+(string)i;
            }
        llSay(0,(string) llGetUsedMemory());llSay(0,(string) llGetFreeMemory());
        mm = llDeleteSubList(mm, 1, 100);
        for (i=100;i>0;i--) {
            mm+="testeintrag für ein array"+(string)i;
            }
        llSay(0,(string) llGetUsedMemory());llSay(0,(string) llGetFreeMemory());
        mm = llDeleteSubList(mm, 1, 100);
        mm = (mm=[]+mm);
         for (i=100;i>0;i--) {
            mm+="testeintrag für ein array"+(string)i;
            }
         llSay(0,(string) llGetUsedMemory());llSay(0,(string) llGetFreeMemory());
         mm=[];
          llSay(0,(string) llGetUsedMemory());llSay(0,(string) llGetFreeMemory()); 
    }
}


__________________
Wol
SL Guided Tours - Wir zeigen Euch SecondLife
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Wolwaner Jervil am 09.02.2013 um 09:41 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Tarot Tae
SF Roockie


[meine Galerie]


Dabei seit: 03.01.2013
Beiträge: 30
SL Nick: Tarot Tae

10.02.2013 12:47 [OPTIONEN] [HOCH] [RUNTER]

super interessant, das sehe ich mir auch an.

Vielen, vielen Dank für Deine Mühe!

Beste Grüsse
Tarot
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Tarot Tae am 10.02.2013 um 12:47 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.

Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Second Forum - Ein deutschsprachiges Forum zu Second Life » Support zu Second Life » Fragen zu Scripting in Second Life » llGetFreeMemory()

Views heute: 2.693 | Views gestern: 8.744 | Views gesamt: 44.549.736



Impressum


Forensoftware: Burning Board 2.3.6
Designed by: ART[I]SIGN GbR
#top #top