Hallo,
Ich schreibe derzeit zur Übung (Trimester ist ja bald wieder vorbei und dann kommen die Prüfungen wieder...) ein paar kleinere Programme (aus meiner Sicht zwar schon etwas größer, aber aus Eurer Sicht wird's winzig sein)
Unter Anderem sind es jetzt Programme, die interaktiv mit dem Benutzer umgehen. So habe ich beispielsweise eine per Nutzereingabe funktionierende While-Schleife (läuft ab, so lange der User bei jeder Abfrage wieder 'ja' eintippt, bricht ab bei 'nein'). Am Ende des Programms folgt meistens die Abfrage, ob der User das Spiel/Programm neu starten möchte. Dazu habe ich jetzt einmal eine Frage.
Erstmal ein (unvollständiges) Beispiel:
[Java]
import userFkt.Basis; //selbst geschriebenes Paket, um mir persönlich Schreibarbeit zu sparen)
public class Beispiel {
public static void main (String[] args){
Base alpha = new Base();
System.out.println("Möchten sie das Programm neustarten?");
System.out.println("Zum neustarten 'ja' (ohne ') eintippen, ansonsten 'quit'");
String s1 = alpha.eingabe(); //liest eine Nutzereingabe ein
if(s1.equals("ja")){
main(args);
}
}
}
[/Java]
Wie gesagt, hier nur ein unvollständiges und recht sinnfreies Beispiel.
Jetzt meine Frage dazu:
Entsteht hierbei eine Rekursion, die zu viele sinnlose Instanzen aufrechthält (nach einem Durchlauf ist diese ja nicht mehr nötig), wenn der User das Programm quasi endlos immer wieder aufruft?
Oder erkennt Java hier selbst, dass die älteren Instanzen unnötig sind und entfernt sie dann aus dem Speicher?
Ich bin normalerweise ein großer Freund iterativer Lösungen und mag Rekursionen nicht so gerne (spätestens seit Haskell *hasse* ich Rekursionen), aber hierbei gefällt mir die Variante ohne While-Schleife irgendwie besser (übersichtlicher).
Dennoch möchte ich natürlich nicht Gefahr laufen, bei größeren Programmen, wie unserem Software-Projekt, dass im Herbst-Trimester kommen soll, zu viele Ressourcen sinnlos zu verschwenden.
Dass es ansich ein rekursiver Aufruf ist, ist mir klar. Immerhin rufe ich in der laufenden Methode selbige wieder auf. Mir geht es nur darum, ob dieses Java-Speicheraufräum-Tool (Namen vergessen) selbstständig erkennt "aha, unnötige instanz -> weg" oder nicht.
lg
Moch
Ich schreibe derzeit zur Übung (Trimester ist ja bald wieder vorbei und dann kommen die Prüfungen wieder...) ein paar kleinere Programme (aus meiner Sicht zwar schon etwas größer, aber aus Eurer Sicht wird's winzig sein)
Unter Anderem sind es jetzt Programme, die interaktiv mit dem Benutzer umgehen. So habe ich beispielsweise eine per Nutzereingabe funktionierende While-Schleife (läuft ab, so lange der User bei jeder Abfrage wieder 'ja' eintippt, bricht ab bei 'nein'). Am Ende des Programms folgt meistens die Abfrage, ob der User das Spiel/Programm neu starten möchte. Dazu habe ich jetzt einmal eine Frage.
Erstmal ein (unvollständiges) Beispiel:
[Java]
import userFkt.Basis; //selbst geschriebenes Paket, um mir persönlich Schreibarbeit zu sparen)
public class Beispiel {
public static void main (String[] args){
Base alpha = new Base();
System.out.println("Möchten sie das Programm neustarten?");
System.out.println("Zum neustarten 'ja' (ohne ') eintippen, ansonsten 'quit'");
String s1 = alpha.eingabe(); //liest eine Nutzereingabe ein
if(s1.equals("ja")){
main(args);
}
}
}
[/Java]
Wie gesagt, hier nur ein unvollständiges und recht sinnfreies Beispiel.
Jetzt meine Frage dazu:
Entsteht hierbei eine Rekursion, die zu viele sinnlose Instanzen aufrechthält (nach einem Durchlauf ist diese ja nicht mehr nötig), wenn der User das Programm quasi endlos immer wieder aufruft?
Oder erkennt Java hier selbst, dass die älteren Instanzen unnötig sind und entfernt sie dann aus dem Speicher?
Ich bin normalerweise ein großer Freund iterativer Lösungen und mag Rekursionen nicht so gerne (spätestens seit Haskell *hasse* ich Rekursionen), aber hierbei gefällt mir die Variante ohne While-Schleife irgendwie besser (übersichtlicher).
Dennoch möchte ich natürlich nicht Gefahr laufen, bei größeren Programmen, wie unserem Software-Projekt, dass im Herbst-Trimester kommen soll, zu viele Ressourcen sinnlos zu verschwenden.
Dass es ansich ein rekursiver Aufruf ist, ist mir klar. Immerhin rufe ich in der laufenden Methode selbige wieder auf. Mir geht es nur darum, ob dieses Java-Speicheraufräum-Tool (Namen vergessen) selbstständig erkennt "aha, unnötige instanz -> weg" oder nicht.
lg
Moch
Zuletzt bearbeitet: