Zum Inhalt springen

Speicherfresser


etreu

Empfohlene Beiträge

Hi,

ich habe ein GUI für eine Konsolenanwendung geschrieben (W2K). Ich habe allerdings das Problem, dass die GUI zur Ausführungszeit ca. 15 MB Arbeitsspeicher nutzt (das schafft bei mir sonst kaum eine andere Anwendung!).

Ich nutze einige Swingklassen (JFrame, JPanel, JButtons, JFileChooser, ...). Die Imports sind schon sehr eingeschränkt, so dass nur die einzelnen Klassen importiert werden, nicht der Rest des Paketes.

Kann mir jemand verraten, wie ich die Nutzung des RAM einschränken kann?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus!

Das kann man ohne Code nicht sagen. Kann es sein, dass Du Referenzen auf Objekte im Speicher hältst, die Du nicht mehr brauchst? Die können den Speicher aufblasen.

Am besten gehst Du mal mit einem Tool drüber, welches Dir den allokierten Speicher und die einzelnen Objekte liefert. Musst mal googeln, weil ich da für Swing nichts habe.

Für eclipse wäre es sleak.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich geb dir mal nen kleinen Tip. Erstelle nur mal ein einfaches JFrame mit nem JButton drauf. Schau dir jetzt mal den Speicherverbrauch an. Du wirst verblüfft sein. Java braucht nun mal viel Speicher. Man kann zwar versuchen zu optimieren, nur bringt das meistens nicht wirklich viel. Es hört sich zwar doof an, aber Arbeitsspeicher ist wesentlich günstiger als sich die Mühe zu machen ca. 500kb Speicher raus zu kitzeln.

Peet

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich habe ein GUI für eine Konsolenanwendung geschrieben (W2K). Ich habe allerdings das Problem, dass die GUI zur Ausführungszeit ca. 15 MB Arbeitsspeicher nutzt (das schafft bei mir sonst kaum eine andere Anwendung!).

Ich würde das nicht als Speicherfresser bezeichnen, sondern als normales Java-Programm. Da kannst du machen was du willst aber sobald die VM erstmal oben ist und du ein paar graphische Elemente erstellt hast wirst du immer schon bei über 10 MB liegen.

Aber ich würde mir da auch keinen soooo großen Kopf drum machen. Hab gerade mal bei mir in die Prozesstabelle gesehen und zwei IE Instanzen liegen auch bei 12 und 14 MB - das liegt also auf dergleichen Stufe.

Eclispse benötigt bei mir auch schonmal 50 MB und mehr. Aber wir haben ja auch keinen Wettbewerb "Wer benötigt am wenigsten Speicher". Gedanken würde ich mir erst machen, wenn dein Programm merklich langsamer wird und das ganze System mit nach unten zieht.

Ciao

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wir haben das selbe Problem.

Die 15 MB am Anfang stören mich nicht, aber je länger das Prog läuft, desto größer wird der Speicherbedarf.

Alle Instanzen usw. werden nachweislich abgebaut.

Aber Java gibt den Speicher nicht mehr frei, zumindest nicht alles.

Am Ende eines Arbeitstages liegt der Speicher bei den Benutzer bei ca. 120 MB.

SKANDAL.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also 120 MB ist doch wohl ein bisschen übertrieben.

Wir arbeiten auch den ganzen Tag mit den Programmen und haben am Abend auch nicht mehr Speicherverbrauch (ca. 25-35MB) als am Morgen (trotz ewig vielen Datenbankzurgiffen und entsprechender GUI). Wir arbeiten hier mit der

J2RE-1.4.1_02 für Windows. Und die geht echt klasse.

Peet

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also 15 MB sind bei Swing vollkommen normal.

Ich komme z.B. für einen JFrame nicht unter 10 MB Speicher.

Wenn der Speicher wächst, löscht ihr zumindest teilweise eure Objekte nicht.

Beispiel:

----------------

Es reicht nicht, einfach ein Panel auf null zu setzen, wenn auf dem Panel noch Components sind, an denen Listener registriert sind.

Lösungen: Listener abmelden oder jede einzelne Componente auf null setzen.

----------------

Um sowas in seiner Anwendung feststellen zu können, kann man sogennte Profiler verwenden.

z.B. Optimizeit von Borland oder JProbe von Quest.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...