Ergebnis 1 bis 12 von 12

Thema: Java RAM-Verbrauch

  1. #1
    Registered User
    Registriert seit
    Jan 2001
    Beiträge
    4.852
    Renommee
    1000

    Java RAM-Verbrauch

    Heute haben es Sun und die Hardwareindustrie geschafft: Ich habe mir 512 MB RAM dazugekauft, um endlich Azureus, Firefox, amarok, Psi und eine Konsole gleichzeitig offen haben zu können, ohne dass hunderte MB ausgelagert werden und der Firefox zu ruckeln beginnt. Das Problem stellt dabei eigentlich nur Azureus dar, wobei es bei anderen Java-Anwendungen (Eclipse) dasselbe oder noch schlimmer ist:
    9651 richard 25 10 408m 24m S 101m 3.0 10.7 2:19.23 60 327m java
    Die 408 MB sind der gesamte virtuelle Speicher, den die Anwendung braucht. Die 327 MB ist die Größe des tatsächlich verbrauchten Speichers für Daten.

    Nun gibt es ja oft Leute, die einem erklären wollen, dass Java eh nicht viel RAM braucht und superschnell ist, aber es ist unter normalen Umständen einfach nicht wahr.

    Was mich jetzt aber interessieren würde: Warum braucht Java so viel RAM? Ist es wegen der Speicherverwaltung und der "garbage collection", die ab und zu mal stattfindet und anscheinend sehr viel übrig lässt?
    www.gimpusers.de - GIMP-Tutorials und -Infos

  2. #2
    Registered User
    Registriert seit
    Dec 2000
    Beiträge
    2.319
    Renommee
    1120

    Re: Java RAM-Verbrauch

    javaprogrammierer denken, threads wären ne Lösung. Pro Socket zwei Threads, also zweimal heapsize (2mb?), da geht das ganz fix.

  3. #3
    Moderator
    Registriert seit
    Jun 2001
    Beiträge
    1.327
    Renommee
    846

    Re: Java RAM-Verbrauch

    Ja, es liegt weniger an der Sprache als an den Programmierern. In Java musst du dich halt nicht selbst um Speicherbelegung kümmern. Das führt leicht dazu, überhaupt nicht darüber nachzudenken. Und so bleiben (evtl. über ein paar Ecken) Objekte referenziert, die gar nicht mehr gebraucht werden. Und Objekte, auf die noch eine Referenz existiert, räumt der GC zu recht nicht weg. Die Mehrzahl an Threads spielt da natürlich auch mit rein.
    Wobei in den letzten Jahren Themen wie Memory-Leaks und Speicherverbrauch zumindest meiner Wahrnehmung nach häufiger angesprochen werden und mehr ins Bewusstsein der Programmierer rücken.
    Aktuelle Probleme der Doppelwoche:
    [29 Logik] Fahnenjagd

  4. #4
    Registered User
    Registriert seit
    Jan 2001
    Beiträge
    4.852
    Renommee
    1000

    Re: Java RAM-Verbrauch

    Stellt sich die Frage, ob ein DoS des Systems durch hunderte ausgelagerte MB Speicher nicht genauso schädlich ist wie wenn man new, delete und Zeiger einführt - noch dazu wo man in Java genauso gut NullPointerExceptions haben kann. => Fehldesign
    www.gimpusers.de - GIMP-Tutorials und -Infos

  5. #5
    Registered User
    NewYearsChallenge Sieger 2010

    Registriert seit
    Oct 2002
    Beiträge
    730
    Renommee
    444

    Re: Java RAM-Verbrauch

    Was hast du denn für eine VM? Die von Sun? Kann es sein, dass sich die unter *nix irgendwie anders verhält? Ich kann das ganze hier nämlich überhaupt nicht nachvollziehen. Eclipse (3.2M4) bei mir hier nach ein wenig arbeiten, Projekte öffnen, Nach Klassen suchen, ...
    Code:
    eclipse.exe	1064		WORKSTATION\x	8	1	396 K	1.736 K
      javaw.exe	1520		WORKSTATION\x	8	20	94.648 K	85.064 K
    Mehr als ~150 MB hat Eclipse hier noch überhaupt nie gebraucht.

    Wenn mal ein Programm mehr gebraucht hat, dann weil ich ihm mehr Speicher zugewiesen habe um große Arrays nach Muster durchsuchen zu können, ...

    [Edit]Nachtrag:
    Hab hier grade Winamp (lange Playlist und große MediaLibrary), Eclipse, eine ssh-Session, Firefox (1.5.0.1) und Miranda laufen. Gesamtspeicherverbrauch 287 MB[/Edit]
    destructor

  6. #6
    Registered User
    Registriert seit
    Jan 2001
    Beiträge
    4.852
    Renommee
    1000

    Re: Java RAM-Verbrauch

    Was hast du denn für eine VM? Die von Sun?
    Hab es mit 2 versucht:
    shell:
    me@localhost $ java-version
    java version "1.5.0_06"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
    Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)


    shell:
    me@localhost $ /usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/bin/java -version
    java version "1.4.2"
    gij (GNU libgcj) version 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu9)

    Copyright (C) 2005 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



    Die zweite wär mir ja lieber, aber die verbraucht fast genauso viel und Azureus funktioniert damit nicht, alle Netzwerkverbindungen 0 B/s.
    www.gimpusers.de - GIMP-Tutorials und -Infos

  7. #7
    Registered User
    Registriert seit
    Oct 2003
    Beiträge
    68
    Renommee
    57

    Re: Java RAM-Verbrauch

    OffTopic:

    Guten Abend!
    Ich kann mich RFC822 nur anschließen. Java unter Linux ist irgendwie ein Krampf.
    Bei mir ist Eclipse so langsam, dass es nicht verwendbar ist. Ich verwende momentan JBuilder von Borland, obwohl ich viel lieber Eclipse verwenden würde. Bei swing-Anwendungen geht die Performancelast der VM (egal welcher) sehr stark in die Höhe unter Linux. Unter Windows ist das nicht so. Warum? Gibt es vielleicht Komplikationen mit X oder gtk? Ich hab schon nach dem Problem gesucht konnte aber keine Lösung finden.
    Ich habe mir auch eine VM von IBM heruntergeladen, die sehr performant sein soll, wenn man den Benchmarks trauen will:

    http://www-128.ibm.com/developerworks/java/jdk/linux/

    Es hat sich allerdings nicht viel geändert.
    Da es für mich nicht in Frage kommt unter Windows zu programmieren muss ich wohl weiter warten, bis es eine gute Lösung gibt und mich vorerst mit IDEs herumschlagen die nur funktionieren, wenn ich jedes mal neu die serial eingebe.

    MfG
    darksirius

  8. #8
    Moderator
    Registriert seit
    Jun 2001
    Beiträge
    1.327
    Renommee
    846

    Re: Java RAM-Verbrauch

    Zitat Zitat von darksirius
    Bei swing-Anwendungen geht die Performancelast der VM (egal welcher) sehr stark in die Höhe unter Linux.
    Wirklich Swing? Die krassen Beispiele (Azureus, Eclipse) benutzen SWT. Und das versucht ja gerade, möglichst dünn auf die nativen Ressourcen aufzusetzen. Muss man da nicht auch selbst immer alles freigeben? Ich habe mich davon bisher eher fern gehalten. Ich bin mit Swing ganz zufrieden.

    Zitat Zitat von RFC822
    Stellt sich die Frage, ob ein DoS des Systems durch hunderte ausgelagerte MB Speicher nicht genauso schädlich ist wie wenn man new, delete und Zeiger einführt - noch dazu wo man in Java genauso gut NullPointerExceptions haben kann. => Fehldesign
    Mal langsam. Das new ist ja vorhanden. Das delete hast du indirekt: Behalte keine Referenzen und das Objekt wird irgendwann gelöscht (z:B. wenn der Speicher gebraucht wird). Und Zeiger ... Objektreferenzen sind nicht viel anders. Nur sicherer, da getypt. Und auf das wilde im Speicher umherhüpfen verzichte ich gern.
    Aktuelle Probleme der Doppelwoche:
    [29 Logik] Fahnenjagd

  9. #9
    Registered User
    Registriert seit
    Oct 2003
    Beiträge
    68
    Renommee
    57

    Re: Java RAM-Verbrauch

    OffTopic:

    Entschuldige bitte, ich hab das durcheinander gebracht. Ich meine SWT mit den Performance-Problemen.
    Ich bilde mir außerdem ein, gelesen zu haben, dass es da Probleme mit gtk gibt.
    Allerdings konnte ich noch keine Lösung dazu finden.
    MfG
    darksirius

  10. #10
    Moderator
    Registriert seit
    Jul 2000
    Beiträge
    3.762
    Renommee
    1214

    Re: Java RAM-Verbrauch

    OffTopic:
    Verwendet SWT/Swing eigentlich AWT als Basis? Das wären dann ja ne Masse an Layern ... SWT/Swing verwendet AWT verwendet GTK verwendet X ... könnte das nicht mal bitte einer direkt umsetzen? *seufz* Layering ist manchmal halt doch harmful
    kuchen ist dumm, weil er nur labert und nicht wirklich lernen oder verstehen will.

  11. #11
    Moderator
    Registriert seit
    Jun 2001
    Beiträge
    1.327
    Renommee
    846

    Re: Java RAM-Verbrauch

    Zitat Zitat von Deknos
    OffTopic:
    Verwendet SWT/Swing eigentlich AWT als Basis? Das wären dann ja ne Masse an Layern ... SWT/Swing verwendet AWT verwendet GTK verwendet X ... könnte das nicht mal bitte einer direkt umsetzen? *seufz* Layering ist manchmal halt doch harmful
    Ähm, Swing und SWT darfst du auf keinen Fall zusammenschmeissen. Swing setzt auf AWT auf, ja, und ist selbst reines Java. SWT ist mehr oder weniger nur eine ganz dünne Lage auf nativen Ressourcen. Niveaumässig also eher mit AWT vergleichbar, obwohl die Vielzahl an Komponenten dazu verleitet, es mit Swing zu vergleichen. Aber die sind halt einfach schon im jeweiligen OS vorhanden. (Ich bin mir nicht ganz sicher, aber ich glaube, ist einmal was nicht vorhanden, wird das dann praktisch mit AWT(?) emuliert). SWT hat auch nichts mit dem Java-Standard zu tun, sondern wird eigenständig als OpenSource entwickelt (hat sich aus dem Eclipse-Projekt entwickelt). Darum kommst du auch nicht mit den von der VM zur Verfügung gestellten Funktionen aus, sondern hast bei jedem SWT-Programm native Bibliotheken, die du benutzt.
    Aktuelle Probleme der Doppelwoche:
    [29 Logik] Fahnenjagd

  12. #12
    Registered User
    Registriert seit
    Oct 2003
    Beiträge
    68
    Renommee
    57

    Re: Java RAM-Verbrauch

    Guten Tag!
    Also was sicher nicht uninteressant ist, falls es nicht eh schon klar sein sollte, ist folgendes (auch wenn das mit ziemlicher Sicherheit nicht das Speicher-Problem ist):

    [1]
    Im Gegensatz zu dem AWT erfordert das SWT eine explizite Res-
    sourcenverwaltung. So benutzt das SWT für Bilder, Farben und
    Fonts Betriebssystemressourcen, die, sobald sie nicht mehr benö-
    tigt werden, mit dispose() wieder explizit freigegeben werden soll-
    ten.

    Unter [2] ist ein interessanter Vergleich zwischen SWT und Swing.
    Unter [3] ist ein Artikel über Eclipse und seine Langsamkeit

    Für Eclipse gibt es ein Plugin namens [4] SWT/Fox, das erlaubt anstatt des SWT/Gtk+ Ports einen Port namens SWT/Fox zu verwenden, der angeblich um einiges schneller ist. Habe es leider noch nicht zum laufen gebracht

    MfG
    darksirius

    [1] http://www.dpunkt.de/leseproben/3-89864-281-X/Kapitel_8.pdf
    [2] http://cld.blog-city.com/comparing_swt_and_swing.htm
    [3] http://cld.blog-city.com/why_eclipse_developers_are_moving_to_netbeans.htm
    [4] http://swtfox.sourceforge.net/
    Geändert von darksirius (12.02.2006 um 18:17 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. RAM verbrauch eines Benutzers ermitteln
    Von TFA im Forum UNIX/Linux
    Antworten: 1
    Letzter Beitrag: 17.02.2005, 18:41
  2. Antworten: 17
    Letzter Beitrag: 28.06.2003, 18:49
  3. Antworten: 11
    Letzter Beitrag: 17.05.2003, 20:27
  4. Berechnung des Verbrauch eines Computers?!
    Von Trigga im Forum Hardware
    Antworten: 10
    Letzter Beitrag: 06.05.2002, 14:23

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •