Hallo Matthias,
ich bin auch gerade dabei mir etwas LUA anzulernen und stöbere natürlich überall herum um ein paar Antworten zu bekommen...
Die Frage CG ist nicht so leicht zu beantworten und ich glaube Du wirst nicht viele Antworten bekommen. Ich versuche es einmal mit meinem Wissenstand und bitte die nachfolgenden User die es besser wissen mich nicht zu kreuzigen
Eigentlich benötigt man CG nicht weil LUA damit alleine sehr gut umgehen kann. CG hilft eigentlich nur wenn man viele Variablen benutzt und diese dann nicht mehr benötigt. Vor dem CG muss man aber den Variablen den Wert NIL zuweisen weil eine Variable wo auch nur ein einziger Zeiger hinweist nicht bei CG gelöscht wird!!!
Ich habe selbst einmal ein großes Array produziert und es anschließend mit der Zuordnung von NIL gelöscht. Zumindest habe ich das geglaubt... nachdem ich diese Variable wieder verwenden wollte waren alle Werte wieder da!!! Diese werden nämlich erst nach CG tatsächlich gelöscht, aber nur wenn kein weiterer Zeiger existiert!!!
Um vielleicht die Auswirkung deiner Programmierung selbst zu testen, verwende einfach einmal diesen Code:
local function init()
mytable = DEINE VARIABLEN UND/ODER ARRAY
print(collectgarbage("count"))
mytable = nil
print(collectgarbage("count"))
a=system.getTimeCounter()
print(collectgarbage("collect"))
print(system.getTimeCounter()-a)
print(collectgarbage("count"))
end
Der Befehl "count" gibt die gerade benötigte Speichergröße in KB deiner Anwendung an.
Probiere es einmal aus und Du wirst sehen nach Zuordnung von NIL an deine Variable verwendet dein Programm sogar mehr Speicher als vorher!!! NIL gibt den Speicher nicht frei, aber ordnet diesen Wert deiner Variablen zu.
Den TimeCounter habe ich laufen gelassen weil auch CG Zeit benötigt die Du vielleicht nicht opfern willst!!!
Bei meinem Test mit einem Array (ca. 100 Werte) waren es immerhin 6 Millisekunden.
Also: Nach NIL wird kein Speicher freigegeben. Auch CG benötigt Zeit. LUA kann eigentlich selbst sehr gut damit umgehen.
Jetzt hast Du einmal einen kleinen Vorgeschmack bekommen
Viel Spaß beim Programmieren!!!
LG Günter