Lokale bzw. Globale Variablen und Konstanten

Hier bitte alles rein was Off-topic ist.

Moderatoren: Cyrelian, seppy

Antworten
Benutzeravatar
guinnes
Beiträge: 146
Registriert: 21. Apr 2020 19:46

Lokale bzw. Globale Variablen und Konstanten

Beitrag von guinnes »

Hallo
Wegen dem Thread Speicherverbrauch noch eine Verständnissfrage:
Wenn ich innerhalb einer Rule eine Variable bzw. eine Konstante anlege ist die nach meinem Verständniss lokal zur der Rule und wird vom GC abgeräumt, wenn die Rule nicht mehr aktiv ist.
Wie sieht es aber aus, wenn ich am Anfang des Rules-Files eine Variable deklariere ? Ist die dann Global oder Lokal zu dem Rules-File ? Wenn lokal, dann die Frage : Wie lege ich eine Systemglobale Variable bzw. Konstante an ?
Hintergrund : Ich möchte 2 Konstanten definieren, die Global zu einem Rules-File sind, in anderen aber nicht benötigt werden. Dabei will ich vermeiden, daß die Konstanten jedesmal, wenn ich den Rules-File ändere, neu angelegt werden und die "alten" nicht ordnungsgemäß entsorgt werden
Glückauf
guinnes

Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Lokale bzw. Globale Variablen und Konstanten

Beitrag von udo1toni »

Ich denke, da gibt es ein Missverständnis.

Die Aufteilung der Rules auf mehrere Dateien hat erst mal nur organisatorischen Charakter. Wenn man an einer Rule etwas ändert, so bekommen nur die Rules in dem betroffenen File beim Speichern den System started Trigger. Nur die globalen Variablen dieser Datei werden komplett gelöscht.
Die Rules werden aber bereits zu diesem Zeitpunkt wieder in den Speicher geladen und prozessiert. Variablen benötigen aber auch keine Unmengen Speicher.
openHAB gibt den Speicher der lokalen Variable wieder frei, sobald die Rule beendet wurde, das ist schon richtig. Wann die Garbage Collection das aufräumt, ist aber ein anderes Thema. Speicherknappheit kommt jedenfalls gewöhnlich nicht durch ein paar globale Variablen zustande.
Ist das aber bei Dir der Fall, so solltest Du eher grundsätzliche Überlegungen zu Deinen Rules anstellen :) denn dann läuft da vielleicht etwas schief.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten