outOfMemoryError

  • Themenstarter Themenstarter ?!?
  • Beginndatum Beginndatum
?

?!?

Gast
Hallo erstmal,

ich habe eine kleine frage bezüglich outOfMemoryError: java heap space.
1. Gibt es ein einfach Beispielcode der diesen Error Produziert?

2. Und zum eigentlichen Punkt zu kommen.
Ich habe eine Anwendung dir mir 3D Objekte aus VRML Datei auslesen und letztendlich in einer Scene anzeigt.
Ich bin grad in der Probierphase und erhöhe natürlich die Anzahl der 3D Objekte die ich laden möchte.
Irgendwann bekomme ich ein outOfMemoryError und dann habe ich mir gedacht, der Anwendung mehr speicher zur Verfügung zu stellen.
Also vom Prinzip würde es gehen, aber wie "korrekt" ist das?

Mfg
 
Java:
List<String> list = new ArrayList<String>();
while (true) {
  list.add("bla");
}

Was "korrekt", Speicher zu erhöhen, wenn du mehr Speicher brauchst?
 
Natürlich ist es korrekt - du kannst nun einmal nicht beliebig viele Objekte in einen begrenzten Speicherraum laden. Wenn du mehr Objekte laden musst, als dein Speicher hergibt, musst du ihn erweitern - oder das Laden bzw. die Darstellung der Objekte im Speicher verbessern, wobei dies in deinem Falle nur schwerlich bis gar nicht möglich sein dürfte.
 
Hi .

Was mich wunder das die VM nicht selber den maximale Speicherverfügung erhöht oder zwischenspeichert auf die Platte oder so ( was an der Performance dann natürlich nagen würde ).
Das der Programmierer sich darum kümmern muss ist schon ein wenig ungewöhnlich, in meinen Augen.
Oder wird es in anderen Programmiersprache so gemacht?

Gibt es ein anderen weg ausser z.B
Java:
long maxMemory = Runtime.getRuntime().maxMemory();
if (maxMemory < 300000000) {
            String userdir = System.getProperty("user.dir");
            String cmd = "java -Xms500m -Xmx500m -jar \"" + userdir + "\\sowieso.jar\"";
            try {
                Runtime.getRuntime().exec(cmd);
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.exit(0);
        }
??
Was man z.B beim Programmstart anwenden könnte oder wenn outOfMemoryError autritt?

P.S Bin noch nicht der Erfahrenste , also bitte bissl um nachsicht 😉
Mfg
 
Naja, vielleicht weil es besser ist das einem Programm die Puste ausgeht als einem ganzen Server wenn die
JVM zu gierig wird. ;-)
 

Neue Themen


Zurück
Oben