nicht genug speicher - profiling trotz error

Status
Nicht offen für weitere Antworten.

dermoritz

Bekanntes Mitglied
ich hab ein speicherproblem mit meinem programm (out of memory), hab die vm schon auf "-Xms512m -Xmx1200m" also max 1,2gb. ich benutze eclipse mit dem profiling paket (Eclipse Test & Performance Tools Platform). aber entweder lese ich es falsch oder es ist nicht aussagekräftig solange das programm läuft.

jedenfalls zeigt es mir maximal einige mbyte unter total size an - die summer aller "total size" sollte unter 20mb liegen.

kann mir jemand mal bitte sagen ob und wie man in so einem fall vorgeht? (andere tools? andere einstellung des profilers?)


zum programm: das es viel speicher verbraucht ist normal (ich berechne das kartesische produkt von mengen) die frage ist wo da noch luft ist - eventuell hab ich auch irgendwo fehler bzw. kann zumindest halbieren oder so. ein profiler würde mir halt helfen wo zu suchen ist.
 

Murray

Top Contributor
Speicherengpässe kann es ja nicht nur beim Heap, sondern auch beim Stack geben - dann hilft -Xmx natürlich nichts. Das sieht man aber am Stack-Trace.
 

dermoritz

Bekanntes Mitglied
da beim erhöhen der oben genannten zahlen das programm viel länger läuft würd ich sagen ich hab den engpass gefunden. ich hab inzwischen das problem so klein gemacht das ich es per tptp profilen kann, aber das nützt mir gar nix.

bei einer memory analyse kommt raus das der meiste speicher für byte[] draufgeht. ich kann nicht sehen bei welcher methode oder welcher oberklasse das byte[] so groß wird.


feherlausgabe:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at ect.stimuli.Stimuli.cartProduct(Stimuli.java:89)
at ect.stimuli.UntimedStimuli.<init>(UntimedStimuli.java:50)
at ect.main.Ect.main(Ect.java:91)

die funktion die den speicher frisst ist genau die die ich verdacht hab:

Code:
	public static <T> List<List<T>> cartProduct(final List<List<T>> sets, final int dt_factor) {
		List<List<T>> cartesian_product = new ArrayList<List<T>>();
		List<T> cartesian_product_element;
		int n = 1;
		Iterator<List<T>> sets_it = sets.iterator();
		// loop to get cardinality of Cartesian product
		while (sets_it.hasNext()) {
			List<T> set = sets_it.next();
			n *= set.size();
		}
		for (int i = 0, times = 1; i < sets.size(); times *= sets.get(i).size(), i++) {
			cartesian_product_element = new ArrayList<T>();
			List<T> set = sets.get(i);
			for (int j = 0; j < n / (times * set.size()); j++) {
				for (T element : set) {
					for (int k = 0; k < (times * dt_factor); k++) {
						cartesian_product_element.add(element);
					}
				}
			}
			cartesian_product.add(cartesian_product_element);
		}
		return cartesian_product;
	}

sie bildet ein kartesisches produk folgender form:
z.b. für die mengen (a,b,c) und (1,2,3):
aaabbbccc
123123123

nun stelle man sich das ganze mit 10 mengen vor mit im schintt 5 elementen -> 5^10. die frage wäre nun kann ich die oben genannte funtion irgendwie optimieren oder bin ich schon beim minimalen speicherverbrauch?
 

Kim Stebel

Bekanntes Mitglied
müssen es listen sein? da du die größe des kartesichen produkts ja schon im vorhinein kennst, könntest du auch ein array nehmen, dessen elemente sets sind. und wieso nimmst du überhaupt listen um sets zu implementieren....wenn es doch sets gibt? arraylist ist ohnehin nicht gerade die beste lösung für große datenmengen, erst recht wenn man dem konstruktor keine angemessene anfangsgröße übergibt.
 

dermoritz

Bekanntes Mitglied
die äußere struktur könnte durchaus ein array sein aber die innere struktur - also die art der menge muss beliebig sein. kann man ein array auf einem generischem typ bilden? ich glaub das geht nich so richtig?!

aber letztendlich löst es das eigentliche problem nicht: die speicherkomplexität.

ab einer bestimmten problemgröße würde der error immer kommen. die frage ist ob man das ganze etwas speciher schonender implementieren kann?!
 

dermoritz

Bekanntes Mitglied
also die speicherkomplexität sollte "noch" kein problem sein. bzw. sollte ich mit 1gb heap size lange reichen?!

in dem speziellen fall hat das cartesische produkt z.b. ca 11mio elemente. die struktur speichert aber nur referenzen auf die jeweiligen elemente. d.h. ich hab nur so viel objekte wie ich ursprünglich elemente hab, aber eine riesige menge referenzen.

mein hauptproblem is eben das ich keine ahnung hab wie ich vernünftig in eclipse den speicher überwachen kann. denn das was mir tptp anzeigt ist ja bei weitem entfernt von irgendwelchen grenzen.

ich würde als erstes gerne mal sehen wie groß die heap size für ein gegebenes problem ist - ich weiß eben nur das für 11mio elemente 1,2gb nicht reichen und für ein fünftel davon auch nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Nicht genug Eingabemöglichkeiten in der Konsole Java Basics - Anfänger-Themen 5
G Grundlagen sitzen nicht bzw. nicht intelligent genug Java Basics - Anfänger-Themen 7
Pentalon Signatur nicht eindeutig genug ? Java Basics - Anfänger-Themen 3
D nicht genug Speicherplatz auf dem Datenträger Java Basics - Anfänger-Themen 9
B Zeitmessung nicht genau genug Java Basics - Anfänger-Themen 11
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
A JavaFX-Anwendung läuft nicht mit Selenium WebDriver Java Basics - Anfänger-Themen 0
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
J Meine Mails gehen nicht raus Java Basics - Anfänger-Themen 8
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
S Ist JDK jetzt free oder nicht? Java Basics - Anfänger-Themen 5
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
M JButton setBackground() färbt nicht den ganzen Knopf Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Dekorator Muster - Irgendwas stimmt hier doch nicht? Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 22
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
MarvinsDepression Umgebungsvariable kann Java-Applikationen außerhalb der IDE nicht starten Java Basics - Anfänger-Themen 4
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben