Speicherverschwendung
-
Hi
Bei mir verschwendet Java unheimlich viel Speicher unter Windows (Task-Manager). Warum ist das so?
-
Was ist bei dir "unheimlich viel Speicher"?
Je nach komplexität der Anwendung benötigt die Java VM mehr oder weniger viel RAM.
Ein z.B. Borland JBuilder benötigt unter Windows schon mal gut und gerne 512MB RAM oder mehr. Besser mehr, wenn es auch noch einigermassen performant laufen soll.
Auf meinen Workstations sind allerdings durch die Bank weg 2 bzw. 4 Gigabyte Hauptspeicher verbaut. Sodass mir der Speicherverbrauch der Java VM dann doch noch nie so aufgefallen ist.
-
Hmmm ob Java nun Speicher verschwendet, sei dahingestellt.
Was ich allerdings auch nicht sooo super finde, ist die Tatsache,
dass die Binarys eines Java-Programms seehr klein sind, ABER leider sich dieses mini Programm sich im Speicher derbe aufbläht.
Ich nehme mal an, das kommt durch die JVM.Lustig finde ich schon folgendes Beispiel:
public class Test1{ static public main(String args[]){ try { Thread.currentThread().sleep(10000); } catch (InterruptedException e) { } } }
Diese Klasse ist sehr klein auf der Festplatte und auch noch relativ "klein" im Speicher (wenn man ca 4MB klein nennen kann).
import javax.swing.*; public class ParallelPortTest extends JFrame{ public ParallelPortTest(){ this.setSize(400,400); this.setVisible(true); } public static void main(String[] args) { new ParallelPortTest(); } }
und schwups ist das Programm im Speicher schon auf 10-12MB angewachsen.
Hehe, und ob du nun 256MB Arbeitsspeicher hast, oder 4GB ... auch der Speicher ist endlich und nur eine Frage der Zeit, oder eine Frage der vielen kleinen Tools, die man gleichzeitig öffnen könnte, die aber kaum Funktionalität zur verfügung stellen.
Ich persönlich finde ein Programm, welches 4MB braucht um nichts zu tun (oder auch nur wenig), eine Speicherverschwendung
Oder mal ganz anders: Frag mal einen Assembler Programmierer, was er mit 4MB alles anstellen könnte
Ich würd mich ja zufriedener Stellen, wenn die JVM wenigstens nicht 2 mal im Speicher stehen würde, wenn man sogar das gleiche Programm 2 mal startet.
Also für 2mal nix tun halt auch 2 mal 4MB.
Anstatt 1mal 4MB + x kBNaja, ist halt so wie es ist...
Dennoch ist Java ein schöne Sprache, mit der das Programmieren richtig schön Spass machen kann.
Wenn man nicht gerade Hacken, mega performant mit minimalem Speicherverbrauch programmieren, oder Systemnah arbeiten möchte.
(im gegensatz zu Assembler ist auch C bzw. C++ eine Performanceverschwender )In diesem Sinne,
MfG Ingo
-
Aber der GC von Java ist bei weitem nicht so gut wie der von CL-Implementierungen!
-
Original erstellt von Ingo aka Desert Hawk:
**
Ich persönlich finde ein Programm, welches 4MB braucht um nichts zu tun (oder auch nur wenig), eine Speicherverschwendung
Oder mal ganz anders: Frag mal einen Assembler Programmierer, was er mit 4MB alles anstellen könnte
**Ich persönliche finde es sinnlos, sich den Kopf darüber zu zerbrechen, wieviele Resourcen ein Programm schluckt, das nichts tut. Wichtig ist, wieviele eins benötigt, das viel tut. Solange es bei einem konstanten Overhead bleibt ...