ArrayList Out of Memory

Status
Nicht offen für weitere Antworten.
C

Christian76

Gast
Hallo,

ich habe mal ein Frage über die ArrayListen. Ich befülle eine ArrayList mit JButton solange bis folgenden
Meldung erscheint:

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space


Code:
        for (int i = 0; i < 10000; i++) 
        {
                    ArrayListe.add(new JButton("Knopf"));
        }


Ist die maximale Größe überschritten? Kann ich den Bereich vergrößern?

Gruß

- Christian
 

The_S

Top Contributor
Du hast den maximalen Speicherverbrauch erreicht, d. h. deine VM hat keinen Arbeitsspeicher mehr. Du könntest den HeapSize erhöhen, oder über eine alternative nachdenken, wie du keine 10000 grafische Elemente in einer Liste unter bekommst :roll: .
 
G

Guest

Gast
Ok, das hat natürlich keine Praxisrelevanz, wollte nur mal schauen wieviele ich da reinkriegen, bzw, was ich so alles
in die ArrayList laden kann.

Also ich kenne das von C++, die Klasse VECTOR. Die kann man ja schon beliebig groß konfigurieren.

Aber wie kann ich bei meiner JVM die Heap vergrößern?
 

madboy

Top Contributor
java -Xms<initial heap size> -Xmx<maximum heap size>

Also ich kenne das von C++, die Klasse VECTOR. Die kann man ja schon beliebig groß konfigurieren.
Im Prinzip schon, aber wenn dir der Arbeitsspeicher (+ evtl. swap) ausgeht, ist da auch Schluß :wink:
 

The_S

Top Contributor
Da musst du aber noch was anderes im Speicher haben. Ich bekomme Standardmäßig 84955 Buttons in meine ArrayList :D .

Bei allgemeinen Fragen wie den Heap von der VM erhöhen solltest du in Zukunft die Forensuche nutzen, auch deinen Fehler hättest dir durch die Forensuche erklären lassen können. Du bist nämlich nicht der Erste, der so ein Problem hat ;) .

Also, den Verfügbaren Speicher erhöht man beim Starten der Applikation durch den Parameter -Xmx256m (hier 256MB Speicher)

[edit] Hui, da war ich mal wieder langsam :oops:
 
G

Guest

Gast
Klasse, wunderbar. Wiedermal danke für eure schnelle Hilfe.

Gruß
- Christian
 
G

Guest

Gast
aber nochmal was anderes die JVM Syntax, oder besser die Ausschnitte die ihr mir gezeigt habt (java -Xms<initial heap size> -Xmx<maximum heap size> ), gibs dafür eine Liste mit allen?
 

Leroy42

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Mit nem leeren JButton komm ich sogar auf 91462 :p

Mist :( , hast gewonnen.

Aber das interessiert mich jetzt mal; Woran liegt das?

Code:
import java.util.*;
import javax.swing.*;

public class Test {
	public static void main(String[] args) {
		List<JButton> list = new ArrayList<JButton>();
		for (int i=1; i <= 100000; i++) {
			list.add(new JButton());
			System.out.println(i);
		}
	}
}
gibt bei mir 89 383 Buttons, aber jede JVM bekommt doch
die gleiche Menge Speicher zugewiesen; also woher könnten die
Unterschiede kommen? ???:L
 

The_S

Top Contributor
1. Edit beachten, ich komme jetzt auf 91708.
2. Wenn ich der ArrayList einen entsprechend intelligent gewählten Initalisierugnswert zuweiße, bekomme ich noch mal ein paar mehr rein
3. Ohne Initialisierungswert komme ich immernoch auf 91242, denke mal das liegt daran, dass du noch einen FileWriter laufen hast, der dir die Ausgabe in eine Textdatei speichert
 

Leroy42

Top Contributor
Natürlich!

auf 3. hätte ich möglicherweise auch
selbst kommen können.

2. ist ja vollkommen logisch
 
C

Christian76

Gast
ich glaube meine Frage ist irgendwie untergegangen,

wo finde ich eine Liste mit den JVM Code wie z.B.

-Xmx256m
 

Leroy42

Top Contributor
Habe ich dir doch schon mit einem Link beantwortet. :shock:

Dort, oben rechts in der Leiste, auf "Tool Docs" und dann auf "Basic Tools" klicken.
 
G

Guest

Gast
bleiben wir doch beim Thema :)
mmh, weis jemand warum die Exception nicht abgefangen wird!

Code:
import java.util.ArrayList;

public class Main 
{
    public static void main(String[] args)
    {
        ArrayList List = new ArrayList();
        double test = 3;
        while(true)
        {
            try
            {
                List.add(test);
            }
            catch(Exception e)
            {
                System.out.println("FEHLER: " +e.toString());
                break;
            }
        }
    }
}
 

The_S

Top Contributor
Weil es ein OutOfMemoryError ist und keine OutOfMemoryException und somit nicht von Exception abgeleitet ist, sondern von Error.
 
G

Guest

Gast
damit kann man lustige Sachen machen!! :)

compile:
run:
#
# An unexpected error has been detected by Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 167772160 bytes for GrET in C:\BUILD_AREA\jdk6\hotspot\src\share\vm\utilities\growableArray.cpp. Out of swap space?
#
# Internal Error (414C4C4F434154494F4E0E494E4C494E450E4850500017), pid=2864, tid=4048
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
# An error report file with more information is saved as hs_err_pid2864.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Java Result: 1
BUILD SUCCESSFUL (total time: 8 seconds)
 
G

Guest

Gast
gibt es eigentlich Methoden mit den ich z.B. die belegten Speicher abfragen kann?
 

The_S

Top Contributor
Hm, das ist widerrum unnormal. So eine Textdatei wird nur bei einer nicht definierten Ausnahme in der VM generiert und ist folglich idR ein Bug. Poste doch mal deinen kompletten Code, der diesen Fehler erzeugt ...
 
G

Guest

Gast
ich übergebe als Syntax der Java Console: -Xmx1300m

hier mein Code:

Code:
import java.util.ArrayList;

public class Main 
{
    public static void main(String[] args)
    {
        ArrayList List = new ArrayList();
        double test = 3;
        while(true)
        {
            try
            {
                List.add(test);
            }
            catch(Error e)
            {
                System.out.println("HEAP voll: " +e.toString());
                break;
            }
        }
    }
}
 

madboy

Top Contributor
java.lang.OutOfMemoryError: requested 167772160 bytes for GrET in C:\BUILD_AREA\jdk6\hotspot\src\share\vm\utilities\growableArray.cpp. Out of swap space?
Gast hat gesagt.:
ich übergebe als Syntax der Java Console: -Xmx1300m
Wieviel Arbeitsspeicher hast du und wie viel Swap? Wenn die Summe kleiner als 1.3 GB + Speicher für OS + Apps ist, ist die Fehlermeldung irgendwie einleuchtend :wink:
 

Ark

Top Contributor
Die try-catch-Anweisungen sind dazu da, Exceptions abzufangen, keine Errors! Wenn ein Error auftritt, kannst du als Programmierer mit an Sicherheit grenzender Wahrscheinlichkeit nichts mehr machen, außer dein Programm abstürzen zu lassen.

Ark
 
S

SlaterB

Gast
try/catch Error oder gleich Throwable GEHT genauso,
ob man das machen sollte ist durchaus die Frage, ja
 
G

Guest

Gast
aber nochmal zu meiner Frage:

gibt es eigentlich Methoden mit den ich z.B. die belegten Speicher abfragen kann?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M ArrayList oder LinkedList Allgemeine Java-Themen 10
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
B Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge> Allgemeine Java-Themen 21
R ArrayList Allgemeine Java-Themen 4
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
L ArrayList sortieren Allgemeine Java-Themen 2
C ArrayList Problem Allgemeine Java-Themen 3
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
S Best Practices CopyConstrutor mit ArrayList Allgemeine Java-Themen 1
S ArrayList Design Allgemeine Java-Themen 4
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
X Adjazenzliste ohne ArrayList Allgemeine Java-Themen 6
X Output von ArrayList Allgemeine Java-Themen 3
H Stream in ArrayList umwandeln Allgemeine Java-Themen 2
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Arraylist mit anderer ArrayList überschreiben Allgemeine Java-Themen 17
MiMa ArrayList sortieren?? Allgemeine Java-Themen 5
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Arraylist vollständig abspeichern und laden Allgemeine Java-Themen 1
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
D ArrayList Indexlänge ändern Allgemeine Java-Themen 2
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
N Mehrdimensionale ArrayList mischen Allgemeine Java-Themen 10
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
MiMa Date aus einer ArrayList<Date> holen ?? Allgemeine Java-Themen 5
MiMa ArrayList Rückgabewerte aus einer Funktion Allgemeine Java-Themen 15
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
T Collections ArrayList Sortieren Allgemeine Java-Themen 4
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
H ArrayList: Leere Elemente finden? Allgemeine Java-Themen 2
GreenTeaYT Verständnisprobleme zur Arraylist Allgemeine Java-Themen 1
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
K ArrayList sortieren Allgemeine Java-Themen 16
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
S Mehrdimensionales ArrayList ins HashSet Allgemeine Java-Themen 10
C ArrayList Allgemeine Java-Themen 8
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
K Array in ArrayList Allgemeine Java-Themen 16
Paul15 2D Arraylist in Jtable Allgemeine Java-Themen 1
Paul15 Arraylist 2D Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
Neumi5694 Datentypen ArrayList vs TreeMap Allgemeine Java-Themen 6
F ArrayList Allgemeine Java-Themen 11
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
N ArrayList in eigenem Object nicht richtig serialisierbar Allgemeine Java-Themen 14
M ArrayList mit verschiedenen Datentypen in String konvertieren Allgemeine Java-Themen 10
Z Elemente einer ArrayList von rechts wegnehmen Allgemeine Java-Themen 5
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
R ArrayList und HashMap Allgemeine Java-Themen 7
T ArrayList zeilenumbruch entfernen Allgemeine Java-Themen 13
D Arraylist/For Schleife/Scanner Allgemeine Java-Themen 30
E ArrayList Anzahl der gleichen Elemente Allgemeine Java-Themen 4
Doopy ArrayList plötzlich leer Allgemeine Java-Themen 2
D Arraylist eigener Klasse an iReport übergeben Allgemeine Java-Themen 7
L ArrayList Inhaltstyp. Allgemeine Java-Themen 5
Z Klassen ArrayList selbst machen Allgemeine Java-Themen 5
J Arraylist speichern und laden? Allgemeine Java-Themen 5
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
M ArrayList<String> Frage Allgemeine Java-Themen 7
O ArrayList kaputt?! Allgemeine Java-Themen 5
M ArrayList<Foo> in ein Foo[] konvertieren? Allgemeine Java-Themen 8
Bananabert Abstract ArrayList Allgemeine Java-Themen 4
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
O ArrayList - Serialisierungs-Problem Allgemeine Java-Themen 11
M JTable + ArrayList Allgemeine Java-Themen 3
M Datentypen ArrayList in Integer konvertieren Allgemeine Java-Themen 3
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
Madlip Variablen 3 Werte aus ArrayList und weiter ... Allgemeine Java-Themen 4
S arraylist nach n. Eintrag numerisch Sortiren Allgemeine Java-Themen 5
O Problem beim Auslesen einer Arraylist von JComboBoxen Allgemeine Java-Themen 2
R Threads korrekte Synchronisation bei Vector und ArrayList Allgemeine Java-Themen 6
M Kovariante Rückgabewerte mit ArrayList Allgemeine Java-Themen 3
H LinkedList<LinkedList<String>> nach ArrayList<ArrayList<String>> ? Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
Maxim6394 Problem mit ArrayList Allgemeine Java-Themen 5
E Berechnung in Arraylist Allgemeine Java-Themen 10
E ArrayList mit unbekannter Größe Allgemeine Java-Themen 8
V Fork Join bei Arraylist Allgemeine Java-Themen 6
H Fehler in Arraylist Allgemeine Java-Themen 2
S Datensätze in eine ArrayList<Movie> speichern Allgemeine Java-Themen 13
S Alle Kombinationen aus ArrayList - Potenzmenge Allgemeine Java-Themen 7
V ArrayList vergleichen mit .equals? Allgemeine Java-Themen 13
J ArrayList-Problem Allgemeine Java-Themen 16
S Von einer ArrayList in die andere schreiben? Allgemeine Java-Themen 6
S ArrayList<JLabels> "malen" Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben