Variable Vernichten
Übersicht

Daniel KnobeBetreff: Variable Vernichten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
habe mir ne kleine IngameGui gecodet, komplett OOP. Nun wollte ich sie für mein RPG was schon relativ fortgeschritten damit umbauen um den Gesamten Code übersichtlicher zu gestallten. Einen Button erstellt man beispielsweise wie folgt: Local Button1:Button = New Button Button1.DefaultSettings() Button1.SetX(50) Button1.SetText("Button1") Nun will ich aber diesen Button zerstören. Hatte mir gedacht mit Delete weil das auch vom Editor "gehighlightet" wird. Naja nur dummerweise hab ich heute zum ersten mal die Hilfe zu diesem Befehl geöffnet: Rem Reserved for future expansions. End Rem Kennt jemand einen Weg trotzdem ein Object zu zerstören??? mfg DKing |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
blub=null
ODER relase blub |
||
between angels and insects |
Daniel Knobe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
release geht net weil as Objekt keine integer Variable ist.
aber Button1=null leuft ![]() Danke |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
leider hat man dir vergessen zu sagen, dass es keine garantie dafür gibt, dass es auch gelöscht wurde.
wenn mehrere type-variablen zu einem objekt linken, dann musst du immer alle DIESE type-variablen auf null setzen, ansonsten bleibt es bestehen... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Daniel Knobe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist dann aber total dumm geregelt :/
Hoffen wir mal das nach nem Update, das schlüsselwort delete die bedeutung kriegt die ich hoffe ![]() mfg DKing |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist intelligent geregelt.
Das System entfernt automatisch, was nicht mehr gebraucht wird. Solange du also noch eine Referenz auf ein Objekt hast, darf es logischerweise nicht entfernt werden ... Wenn du es also loswerden willst, wirst du logischerweise auch voraussetzen, dass es nirgends mehr gebraucht wird, und somit dürfte auch keine Referenz auf das Objekt mehr bestehen. Wenn doch, dann ist einfach dein Design fehlerhaft ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Daniel Knobe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also hat BMax praktisch einen Garbage Collector?
Schade find es besser wenn man den Speicher selber wieder freigeben muss :/ Aber damit kann ich leben ![]() mfg DKing |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst den GC auch ausschalten.
Dazu siehe: GCSetMode und GCCollect |
||
Daniel Knobe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm das ist sehr praktisch das man auswählen kann ob er läuft oder nicht ![]() Ich wusste seit gestern nicht mal das es ihn gibt ![]() Wunderbar. Danke! mfg DKing |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da hast du wohl leider was falsch verstanden.
Laufen tut der GC immer. Der kann nicht deaktiviert werden. Du kannst lediglich die automatik für den "unused collect" deaktivieren und manuell mittels GCCollect dem GC befehlen, dass er alles nicht mehr genutzte freigeben soll (dadurch wird jedoch nicht der reservierte Speicher freigegeben! Das tut der GC nach eigenem ermessen um einen speedeinbruch durch ständiges allozieren / de-allozieren von speicher zu vermeiden). |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie ich verstanden habe, wird es Delete in früherer Form nicht geben - und zwar weil es mehr Speicher benötigt und alle Types verlangsamen würde...
Ich persönlich bin ein großer Fan von früheren Delete - und es ist schade, dass es nicht mehr gibt... Aber mit Auto-GC hat sich wirklich alles zum besseren gewendet so, dass ich an sich auch so noch gut leben kann... ohne Auto-GC war es einfach nur furchtbar... da habe ich in jede denkbare Funktion und in alle möglichen Schleifen Free-Funktion eingebaut - und es war nie genug, da immer mehr Speicher benutzt wurde, als nötig. Erst mit Auto-GC laufen die Progs wirklich schneller und sind schlanker im Speicherverbrauch... Das merkt man hauptsächlich, wenn man mit vielen großen Strings arbeitet. |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja obs bei Strings nicht auch mit den entfernten String Mem Leaks zu tun hat ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
@TheShadow: Du solltest Deine 16MB Arbeitsspeicher mal erweitern und den alten 486DX2 über den Jordan schicken. Man bekommt ja dauernd das Weinen wenn man von Deinen Problemen liest. | ||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Er hat schon recht. Vorher wars bei objekt intensiven Dingen echt ein Horror, weil Mark auf die hirnrissige Idee kam, den GC mit Scopes zu binden.
Und in jeder objekt intensiven Funktion zu collecten hats nur bedingt gebracht, weil der Pool dann net sauber an "höhere Scopes" abgetreten wurde, was das ganze aufräumen in Funktionen nichtig machte ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bruz - wer von uns hat den größeren ....
... PC ![]() nein ich merkte den Unterschied an HotDocs schon - als der neue GC da war... Ist deutlich schneller geworden - und der Speicherverbrauch ist laut Task-Manager etw. gesunken... Sowas macht eine Änderung im Compiler aus... Und sowas hätte vom 1. Tag an da sein sollen... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group