Java-Speicherverwalung

Hallo,

ich habe folgendes Problem mit mein Java-Programm und zwar mit der Zeit (das Programm wird umfangreicher) wird das Programm zu langsam.

Das Problem liegt meiner Meinung nach daran. Wenn ich einer Methode aufrufe, die Ergebnisse aus andere Klasse benutzt, werden Sie jedes mal logischerweise neu berechnet. So ist mein Programm zu verschachtelt geworden und berechne eine Sache mehrmals, weil ich es an unterschiedlichen Stellen brauche.
Ich stelle mir vor, dass ich irgendwie zwischen Ergebnisse speichern muss und dann mit diesen weiter arbeite.
Die Ergebnisse in text-Datei zu schreiben und dann die Zahlen einlesen, scheint mir zu aufwendig.

Kann mir jemand einen besseren Tipp geben?

Hallo,

Hi

ich habe folgendes Problem mit mein Java-Programm und zwar mit
der Zeit (das Programm wird umfangreicher) wird das Programm
zu langsam.

Das Problem liegt meiner Meinung nach daran. Wenn ich einer
Methode aufrufe, die Ergebnisse aus andere Klasse benutzt,
werden Sie jedes mal logischerweise neu berechnet. So ist mein
Programm zu verschachtelt geworden und berechne eine Sache
mehrmals, weil ich es an unterschiedlichen Stellen brauche.
Ich stelle mir vor, dass ich irgendwie zwischen Ergebnisse
speichern muss und dann mit diesen weiter arbeite.
Die Ergebnisse in text-Datei zu schreiben und dann die Zahlen
einlesen, scheint mir zu aufwendig.

Kann mir jemand einen besseren Tipp geben?

Ich fasse nochmal zusammen (dass ich das nicht falsch aufgefasst habe)

Du hast ein Programm indem du wie in einem Wizzard Werte einträgst die du später nochmal brauchst, allerdings nur für diese „Session“ und nicht dauerhaft.

Erzeuge Objekte aus deinen Klassen. Dann schreibst du get-Methoden um dir das Objekt zu holen (und natürlich get-Methoden um die Variablen zu holen die du brauchst). Über das Objekt kannst du dann, mithilfe der get-Methode der Variablen auf die berechneten Werte zugreifen.

Wenn du die Werte auch in mehreren Wochen bzw für mehrere Sessions noch brauchst schreib sie einfach in eine Datenbank (evtl Embedded? ) gibst ein Timestamp mit an und lässt die Datenbank die Werte(falls erwünscht) die älter als 4 Wochen sind löschen (nur so als Bsp)

Noch eine Möglichkeit ist, dass du der JVM inder dein Programm gestartet wird mehr RAM zuweist. Dann hast du mehr Spielraum.
Wobei ich es erstmal mit den o.g. Möglichkeiten versuchen würde.

Hoffe dass ich dir weiterhelfen konnte.

Grüße

DE

Danke erstmal!

Ich fasse nochmal zusammen (dass ich das nicht falsch
aufgefasst habe)

Du hast ein Programm indem du wie in einem Wizzard Werte
einträgst die du später nochmal brauchst, allerdings nur für
diese „Session“ und nicht dauerhaft.

Ja!

Erzeuge Objekte aus deinen Klassen. Dann schreibst du
get-Methoden um dir das Objekt zu holen (und natürlich
get-Methoden um die Variablen zu holen die du brauchst). Über
das Objekt kannst du dann, mithilfe der get-Methode der
Variablen auf die berechneten Werte zugreifen.

Ich denke, dass ich es gemacht habe. Nur wenn auf ein Objekt und Methode mehrmals zugreife und diesen Objekt/Methode dann auf anderen und die etwas aufwendiges rechnen, wird ein und desselben Sache mehrmals gerechnet. Ich will nur auf dem Ergebniss(ein Zahl) zugreifen (einlesen), der vorher irgendwo, irgendwie gespeichert wird und nicht auf dem Objekt/Methode, die das danze Berechnung nochmal durchführt.

Wenn du die Werte auch in mehreren Wochen bzw für mehrere
Sessions noch brauchst schreib sie einfach in eine Datenbank
(evtl Embedded? ) gibst ein Timestamp mit an und lässt die
Datenbank die Werte(falls erwünscht) die älter als 4 Wochen
sind löschen (nur so als Bsp)

Mehrere Sessions brauche ich nicht, aber Datenbank klingt gut. Ich weiß nicht was „Embedded“ ist? Wo kann darüber nachlesen?

Danke erstmal!

Hi

Ich denke, dass ich es gemacht habe. Nur wenn auf ein Objekt
und Methode mehrmals zugreife und diesen Objekt/Methode dann
auf anderen und die etwas aufwendiges rechnen, wird ein und
desselben Sache mehrmals gerechnet. Ich will nur auf dem
Ergebniss(ein Zahl) zugreifen (einlesen), der vorher irgendwo,
irgendwie gespeichert wird und nicht auf dem Objekt/Methode,
die das danze Berechnung nochmal durchführt.

Das ist ja genau das, du greifst nicht auf die Methode zu die berechnet, sondern auf eine Variable. Getter haben nur die anweisung eine Variable zurück zu geben. Die berechnen nix somit „umgehst“ du die berechnung.

Wenn du die Werte auch in mehreren Wochen bzw für mehrere
Sessions noch brauchst schreib sie einfach in eine Datenbank
(evtl Embedded? ) gibst ein Timestamp mit an und lässt die
Datenbank die Werte(falls erwünscht) die älter als 4 Wochen
sind löschen (nur so als Bsp)

Mehrere Sessions brauche ich nicht, aber Datenbank klingt gut.
Ich weiß nicht was „Embedded“ ist? Wo kann darüber nachlesen?

hier als bsp :wink:

http://developers.sun.com/javadb/

Hoffe das hilft dir :smile: