Autor Thema: Eigene Bytecodebasierte Sprache  (Gelesen 8647 mal)

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 03. February 2006, 07:46 »
Zitat von: SSJ7Gohan
Ausserdem fehlt mir die Stackallokation, z.B. für Strings, die nur eine kurze Lebensdauer haben. Realisiert wird das in meiner Hochsprache durch ein Schlüsselwort local, das bewirkt, das eine Variable oder ein Parameter auf dem Stack allokiert wird, und nicht in ein Feld geschrieben werden darf.


Du redest hier aber doch nicht von der Java-VM, oder? Dort wird der Spezifikation entsprechend ALLES auf Stacks gespeichert, wenn ich mich nicht irre.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 03. February 2006, 11:25 »
Nein, bei der Java VM werden die Operanden und Zwischenergebnisse auf einem Stack gespeichert. Die Objekte, Array usw. werden alle im Heap abgelegt.

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 03. February 2006, 18:22 »
Ist schon richtig, klar! Aber "Strings, die nur eine kurze Lebensdauer haben" sind wohl wirklich schwierig zu realisieren, oder? Entweder ist es ein String, der nur lokal eine Funktion angehört und anschließend natürlich entfernt werden kann (und in der JVM auch wird), oder nicht.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 03. February 2006, 18:29 »
Nein, in der JVM wird er danach nicht entfernt. Er bleibt auf dem Heap bis eine Garbage Collection durchgeführt wird. Das belastet den Garbage Collector - fast alle Verfahren dafür hängen von der Anzahl der Objekte ab, und Heapallokation ist auch bei den besten GC Methoden schneller. Man kann zwar durch Analysieren des Quellcodes herausfinden, ob ein Objekt nur lokal gebraucht wird, dazu muss man aber alle Methoden, die das Objekt als Parameter erhalten, analysieren - was Zeit kostet und in andere Optimierungen investiert werden könnte.

 

Einloggen