Release befehl
Übersicht

![]() |
kogBetreff: Release befehl |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten Tag zusammen.
Wie nutzt man richtig den Befehl "Release" unter SuperStrict? mfg *edit* Hat sich erledigt, nach langem ausprobieren kam ich darauf, das man nicht das Objekt angeben muss, sondern das Handle. |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Am besten benutzt Du release garnicht, denn der GC macht die Arbeit normalerweise sehr gut.
Zudem widerspricht sich Superstrict und Integer-Handle ein wenig. Die Integerhandle machen dein Programm langsamer und schlechter wartbar. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich nutze HandleFromObject mit LuaReflection zusammen.
Dann kann ich eine Allgemeine Args Variabel machen: Call("Init",["handleDesObjekts","o","Integer","i","floats","f"]) Ausser du hast vielleicht einen anderen vorschlag? um es Flexibel handhaben zu können |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, mit Lua habe ich mich nur sehr begrenzt auseinandergesetzt, daher kann ich dir da keine Alternative nennen. Da jedoch hier ein Umgehen des GC stattfindet ist dies in der Tat wohl einer der seltenen Fälle für ein Release. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja ich meinte auch nicht bezogen auf Lua, sondern wie du es sonst lösen würdest, mein Call ansatz sieht so aus:
BlitzMax: [AUSKLAPPEN] Function Call:Int(cmd:String,args:String[]=Null,d:Byte=0,d2:Byte=0) |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich das richtig sehe übergibst Du der Funktion einen IntegerHandle und lässt daraus das Objekt ableiten. Da Du damit aber ja eine gültige Referenz in Form eines Objektes erschaffst sollte das Release dann doch unnötig sein - der GC kümmert sich um das generierte Objekt ja sobald es seinen Scope verlassen hat. Interessant wäre eher wo Du das Objekthandle generierst, denn dort sehe ich eher die Gefahr dass ein Leck entsteht.
Hast Du denn wachsende Speicherauslastung im Taskmanager? |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nunja, ich habe eine Klasse names TObject, in der New() methode wird direkt das Handle geholt um so unnötig jedesmal aufrufen zu müssem bei der Call funktion.
Und wenn ich dann ein Objekt zerstören muss, habe ich eine Remove() methode eingebaut um das Handle wieder freizugeben, damit der GC das Objekt zerstören kann. Wie würdest du dann das bewerkstelligen um Flexible Parameter zu haben? |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne es jetzt getestet zu haben wäre mein Ansatz eher wie folgt:
BlitzMax: [AUSKLAPPEN] Function Bla(args:Object[]) Dann müstest Du zwar Integer und Co. in einen Type wrappen aber wärst weg von Objekthandles. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe es jetzt so ähnlich gelöst.
Das ich einen 2. Paramter für "Objects" hinzugefügt habe: BlitzMax: [AUSKLAPPEN] Function Call:Int(cmd:String,args:String[]=Null,objs:Object[],d:Byte=0,d2:Byte=0) Hoffe so ist die bessere alternative? so kann ich nun: Call("Test",["","o"],[self]) machen |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group