1. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  2. Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
    Information ausblenden
  3. Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.
    Information ausblenden

Speicher geht aus

Dieses Thema im Forum "Fragen zu Scripting" wurde erstellt von Pallyn Shamroy, 1. Mai 2008.

  1. Pallyn Shamroy

    Pallyn Shamroy Aktiver Nutzer

    Beiträge:
    304
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Problem:
    Wie kann man es anstellen dass ein Script nicht über die Zeit den kompletten Speicher verbraucht und sich dann aufhängt?

    Gibt es eine Möglichkeit Scripte per Server zu resetten OHNE das man das dazugehörige Objekt wieder von hand "starten" muss ?
     
  2. Lanadriel Llewellyn

    Lanadriel Llewellyn Aktiver Nutzer

    Beiträge:
    145
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Man kann den ungefähren Speicherverbrauch abfragen mit llGetFreeMemory() und man kann auch das Script resetten mit llResetScript().
    Das scheint mir aber nicht der richtige Weg. Ich vermute mal da gibt es noch ein Memory Leak in deinem Script.
    Mal sehen, was die Profis dazu sagen :)
     
  3. Pallyn Shamroy

    Pallyn Shamroy Aktiver Nutzer

    Beiträge:
    304
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Kann man das/die Script(e) auch von einer zentralen Stelle aus resetten ?
    Und wenn die dann money permission brauchen, kann man die auch zentral wieder anlaufen lassen ?
     
  4. Lanadriel Llewellyn

    Lanadriel Llewellyn Aktiver Nutzer

    Beiträge:
    145
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Man kann natürlich irgendeine Nachricht an das Script senden, die dann einen Reset auslöst. Mit den Money Permissions das weiß ich nicht.
    Aber ich würde sowieso empfehlen, erst mal die Ursache für den Speicherverbrauch zu ermitteln.
     
  5. Takeshi Newman

    Takeshi Newman Freund/in des Forums

    Beiträge:
    753
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    es ist nicht möglich, scripte die wegen eines Fehlers nach Speicherüberlauf deaktiviert wurden neu zu starten. Man muss immer über das menue gehen.

    Du kannst ja versuchen dein Script so zu schreiben, das der Speicher reicht.
     
  6. thinkangel McAlpine

    thinkangel McAlpine Aktiver Nutzer

    Beiträge:
    402
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    moin,

    evtl. kann Dir geholfen werden wenn man die Problemstellung besser kennt.
    Welche Variablen füllen sich bei Dir mit was für Daten?
    müssen diese Daten erhalten bleiben oder kann man die Variablen einfach wieder auf 0 setzen?

    evtl. kannst Du Log-Daten die Du haben willst einfach per E-Mail an dich senden, oder das script automatisch resetten wenn eine gewisses speicherminimum erreicht ist .....usw.

    gruss thinkangel
     
  7. Hannibal Hudson

    Hannibal Hudson Superstar

    Beiträge:
    1.566
    Zustimmungen:
    1
    Punkte für Erfolge:
    46
    In dem Fall von Speicher Leak, sind übrigens auch immer Globale Variablen verdächtig.
    Manchmal wird z.b. eine Liste immer weiter gefüllt mit Werten, obwohl alte Werte mittlerweile nicht mehr gebraucht würden (Ein Fehler den ich früher öfter mal gemacht habe) ;-)

    Ansonsten, großes Problem sind grundsätzlich Sachen wie httprequest, da muß man immer berücksichtigen, das man im schlimmsten Fall bis zu 2kb Speicherplatz im Script immer vorhalten muß um diese Requests zu machen!

    Ich gebe zu, in Fällen wo ich Probleme mit Speicherplatz bekomme, fange ich an die Arbeit auf 2 Scripte (oder mehr) zu verteilen, interessanterweise stolpere ich dabei fast immer über den Grund für den Speichermangel und kann ihn beheben (die Aufteilung lass ich dann aber doch oft bestehen).

    MfG
    Hannibal
     
  8. Takeshi Newman

    Takeshi Newman Freund/in des Forums

    Beiträge:
    753
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    sag mal was dein script macht.
     
  9. Pallyn Shamroy

    Pallyn Shamroy Aktiver Nutzer

    Beiträge:
    304
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ich hab das nicht gescriptet, ich stelle mal den kontakt zum creator her

    danke schonmal , für die Tipps bzw Nachfragen
     
  10. Bodokhan Fall

    Bodokhan Fall Nutzer

    Beiträge:
    11
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Sodele dann will ich mich mal einhängen :)

    Also das Problem war / ist die http requests .. das spiel selber macht in der soloversion bzw während der spiele immer das gleich speicherabbild.

    Ich hatte die http requests mit im hauptscript, welches "nur" noch rund 1800 bytes speicher frei zeigte.

    Beim ersten request gingen rund 200 bytes weg, bei jedem 3. - 5. folgendem nochmal 30-60 bytes.

    Ich vermute den grund in dem problem der speicherfragmentierung, da lsl keine garbage collection hat, wenn also ein string nicht mehr genügend speicher am stück findet, holt er sich neuen.

    seit vorgestern habe ich die https ausgelagert in ein zweites prim, welches um die 11k frei meldet, während das hauptscript sich bei ca 2700 bytes einpendelt.

    Bei der gelegenheit habe ich alle überflüssigen variablen, temporäre variablen/lokalen variablen (siehe garbage collection) ersetzt / überbrückt / doppelt genutzt.

    wenn jetzt das 2. prim mit den https unter 1K speicher läuft resetted es sich, das hauptscript läuft weiter.

    ich hoffe mal, daß das so nun funktioniert.

    btw : Hier der Bug-Report ur Garbage Collection. https://jira.secondlife.com/browse/SVC-168
     
  11. Hannibal Hudson

    Hannibal Hudson Superstar

    Beiträge:
    1.566
    Zustimmungen:
    1
    Punkte für Erfolge:
    46
    Schwer von auszugehen, es gibt einige Möglichkeiten in LSL, die nahezu sicher zu ner Stack/Heap Collision führen, wenn man nicht kreativ drumrum arbeitet.
    Deine Lösung mit dem zusatzscript, das den Datentransfer vornimmt, wäre auch meine bevorzugte Variante.

    MfG
    Hannibal
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden