Java Heap space Probleme

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,


Ich habe mehrere *.svg- dateien auf einem JFrame. Wenn ich das Programm starte hat der JFrame eine Größe von 400*500. Wenn ich jetzt den JFrame auf die maximale Größe vergrößere, dann bekomme ich folgenden Fehler:

Code:
java.lang.OutOfMemoryError: Java heap space
        at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
        at java.awt.image.SinglePixelPackedSampleModel.createDataBuffer(SinglePixelPackedSampleModel.java:220)
        at java.awt.image.Raster.createWritableRaster(Raster.java:938)
        at org.apache.batik.gvt.renderer.StaticRenderer.updateWorkingBuffers(Unknown Source)
        at org.apache.batik.gvt.renderer.StaticRenderer.clearOffScreen(Unknown Source)
        at org.apache.batik.swing.gvt.GVTTreeRenderer.run(Unknown Source)

Ich glaube es liegt daran, dass sich die *.svg- Dateien in dem JFrames anpassen (und dadurch größer werden und dadurch eben der Heap- Speicher zu klein wird.

Weiß da villeicht jemand eine Abhilfe?


Vielen Dank

lg
Michl
 

The_S

Top Contributor
Ja, die heapSize erhöhen. Ansonsten zeig mal Code, evtl. haste ja irgendwo nen kleinen Fehler bzw. man kann noch was optimieren ...
 
G

Gast

Gast
gönn der jvm mehr heap speicher (-Xvm #).

oder lös das svg vom jframe, so dass es seine größe nicht mehr ändert.

oder greif in den jframe dementsprechend ein, dass nur der zur darstellung benötigte ausschnitt aus der svg entsprechend vergrößert wird.
 
G

Gast

Gast
wobei mir grad einfällt; ist svg nicht ein vektorgrafik format? wieso belegt das mehr speicher, wenns vergrößert wird? schmeiss die konvertierung in pixel weg ;)
 

MQue

Top Contributor
Mein Code zum holen der *.svg- Datei und zum darstellen auf den verschiedenen JPanels schaut so aus:


(Wie könnte ich den heap von Java (bzw. von der JVM) vergößern?
Code:
for (int i = 0; i < 8; i++)
	    {
                 File f = new File(System.getProperty("user.dir") + "\\pics\\" + vector1.elementAt(i).getIcon());
                 JPanel = new JSVGCanvas();
                    try {
                        JPanel.setURI(f.toURL().toString());
                        } 
                    catch (IOException ex) 
                        {
                        ex.printStackTrace();
                        } 
                JPanel.setBounds(10,10, 400, 300);                    
                JPanel.setOpaque(true);
                   
                JPanel.setLayout(null);
                JPanel.setBounds(i*200, i*200, 200, 200);   // i*200 steht nur so da jetzt, in meinem Code werden sie anders angeordnet            
                }
        
            }
 

The_S

Top Contributor
Variablen schreibt man nach wie vor klein. Und vorallem benennt man sie nicht exakt so, wie auch Klassen heißen. Das verwirrt nur. Desweiteren ist mir keine Klasse bekannt, die SVGCanvas heißt. Woher hast du die?

Wie man den Heap erhöht hat dir schon der Gast gesagt. Außerdem darfst auch du die Forensuche verwenden!
 

MQue

Top Contributor
Erstens hab ich JPanel umbenannt für dieses Forum, hab auf das nicht geachtet dass es jetzt JPanel heißt (heißt beim mir svgPanel),
Mir ist schon klar, das variablen kein anfangen und mit KamelReitern fortfahren!!
und zweitens:
import org.apache.batik.swing.JSVGCanvas;

Wie mach ich das mit der IDE NetBeans, kann ich da den Java Heap auch irgendwei vergrößern oder muss ich das in die Dos- Box eintippseln?

Vielen dank für die Hilfe
 

The_S

Top Contributor
Michael1234 hat gesagt.:
Erstens hab ich JPanel umbenannt für dieses Forum, hab auf das nicht geachtet dass es jetzt JPanel heißt (heißt beim mir svgPanel)

warum benennst du das um :shock: ?

Michael1234 hat gesagt.:
und zweitens:
import org.apache.batik.swing.JSVGCanvas;

Ist trotzdem keine Standardklasse! Soll jetzt der User, der gewillt ist dir zu helfen, sich erst noch über Google deine Libs zusammensuchen? :roll:

Michael1234 hat gesagt.:
Wie mach ich das mit der IDE NetBeans, kann ich da den Java Heap auch irgendwei vergrößern oder muss ich das in die Dos- Box eintippseln?

puh sorry, kA. Verwende hier Eclipse, geht aber bestimmt irgendwie. Versuchs mal mit Google und "Netbeans + HeapSize" ;) .
 

me.toString

Bekanntes Mitglied
Also eigentlich benutzte ich eclipse ... hab aber netbeans hier noch rumfliegen und mal reingeschaut (aber net getestet) ... und da kannst du die Einstellung folgendermaßen machen:
Rechtsklick auf das Projekt - Properties auswählen - unter "Run" kannst du dann die VM-Options ändern
 

MQue

Top Contributor
warum benennst du das um :shock: ?

weil ich mir dachte, es wird dann einfacher zu lesen aber das Gegenteil war anscheinend der Fall.


import org.apache.batik.swing.JSVGCanvas; ist keine Standardklasse, ich hab mir die *.jars von der Seite http://xmlgraphics.apache.org/batik/ heruntergeladen, um *.svg- Dateien darstellen zu können, Stamdardmäßig unterstützt java ja nur *.jpeg und *.png so weit ich weiß. *.svg wird auf keinen Fall unterstützt (standardmäßig)
herzlichen Dank für die Antworten,


lg
 

MQue

Top Contributor
mein Problem ist ja auch, dass ich das im Programm machen muss, sonst hab ich ja das Problem, dass ich das Projekt weitergebe und dort die Vergrößerung auch wieder gemacht werden muss.

ich hab keine Ahnung, wieso mir die *.svg- Dateien den heap so anfüllen.

Gibts da eine Abhilfe?

lg
Michl
 

MQue

Top Contributor
Kann ich den Heap irgendwie leeren oder den GC mal drüberfahren lassen,

Gibts da keine Möglichkeit?

lg und vielen Dank
 

The_S

Top Contributor
der gc läuft automatisch. Du kannst ihn zwar anregen mal drüberzugucken, ob und wann er das macht, kannst du aber nicht beeinflussen. Und wenn du nichts machst, als ein Fenster mit Bild anzuzeigen, kannste da wohl net viel an Heap einsparen ;) .
 

byte

Top Contributor
System.gc();

Aber das wird nicht viel helfen. Denn der OutOfMemoryError kommt erst, wenn der GC schon aktiv war. Die JVM wird standardmäßig mit ner Heapsize von 64 MB gestartet. Wenn das zuwenig ist, dann musst Du wohl oder übel aufstocken.
 

MQue

Top Contributor
jin NetBeans kann man den Heap nicht größer als 64k machen.
Sobald ich -Xms65m schreibe, mag die IDE nicht mehr, bei -Xms64m gehts noch.

Was ich nicht verstehe ist, dass ich z.B.: 3 *.svg- Bilder öffne, diese 3 Bilder wieder schließe, dann andere 2 aufmachen möchte und dann kommt eben die Exception.
Kann es sein dass die *.svg- Bilder im Heap bleiben, denn wenn ich die ersten 3 Bilder noch mal aufmache, passiert nichts.

Das ist mir überhaupt nicht klar.

Vielleicht hat da jemand eine Idee.

lg
Michl
 

The_S

Top Contributor
Wenn du ohne schließen gleich 5 svg Bilder aufmachst, kommt vermutlich auch die Exception oder? Dann hast du die 3 svg Bilder vorher nicht wieder zerstört ...
 

MQue

Top Contributor
mit -Xmx128m gehts jetzt, dann ist mein Programm aber nicht plattformunabhängig!?
 

MQue

Top Contributor
ja bin jetzt auch gerade draufgekommen, ich entferne ja nur die Tabs und nicht die Componenten,


was meinst du mit warum das denn icon_eek.gif ?

der heap ist größer und daher kann ich mehr *.svg- Bilder aufmachen.
 

The_S

Top Contributor
ne, warum sollte dein Programm durch einen größeren Heap Plattformabhängig werden ???:L ?

Brauchst du denn immer alle Bilder im Heap? Kannst du nicht "leere" Tabs erzeugen und erst beim Klicken auf einen Tab das entsprechende Bild laden und das aus dem vorhergehenden löschen?
 

MQue

Top Contributor
Wenn ich bei der Entwicklung den Heap vergrößern muss und da sProjekt dann weitergebe, dann tritt ja wieder das alst Problem auf, da dort vielleicht der Heap wieder nur auf 64k eingestellt ist.

Ich werds jetzt, wie du geschrieben hast, einzeln laden.


Ich lade mom. meine Bilder so wie unten, wie kann ich das *.svg- Bild wieder zerstören bzw. entladen?

Code:
 File f = new File(System.getProperty("user.dir") + "\\pics\\" +myPfad);
                    try {
                        myPanel.setURI(f.toURL().toString());  // hier lade ich das Bild aber wie "entlade" ich es wieder
                        } 
                    catch (IOException ex) 
                        {
                        ex.printStackTrace();
                        }

lg und Danke
 

The_S

Top Contributor
Der Heap wird ja nicht vom Betriebssystem vorgegeben, sondern immer beim start der JVM mit angegeben.
 

MQue

Top Contributor
Hättest du eine Idee, wie ich die *.svg- Datei wieder wegbekomme (entlade, zerstöre)?
Oben hab ich den Code hingeschrieben, wie ich die *.scg- Datei lade
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
L Java OutOfMemoryError Java heap space Allgemeine Java-Themen 3
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
S Java heap space zu klein? Allgemeine Java-Themen 6
B Java Heap Space Allgemeine Java-Themen 5
A OutOfMemoryError: Java heap space Allgemeine Java-Themen 11
I Java heap space Allgemeine Java-Themen 3
K Erhöhung Java Heap Space in Netbeans 6.5 - funktioniert nicht oder bringt nichts? Allgemeine Java-Themen 1
K OutOfMemoryError: Java heap space troz -Xms1024m Allgemeine Java-Themen 2
O viele Datensätze aus Datenbank - Java Heap Space - Excepion Allgemeine Java-Themen 25
V Java heap space Problem Allgemeine Java-Themen 8
Saxony ANT, ProGuard und Java heap space Allgemeine Java-Themen 8
P Java Heap Space Allgemeine Java-Themen 11
F OutOfMemoryError: Java heap space - Speicher verändern Allgemeine Java-Themen 8
P Java Heap Space Exception Allgemeine Java-Themen 30
J java Thread java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 7
G Error: java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 2
G Wird bei RAM-Mangel für Java Heap Space geswappt? Allgemeine Java-Themen 34
H java heap space (outofmemory error) Allgemeine Java-Themen 3
F java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 22
C Java heap Space, aber wie wegkriegen? Allgemeine Java-Themen 3
Thallius Wie mache ich eine Java App mit Icon startbar die mehr Heap Speicher braucht? Allgemeine Java-Themen 3
V Java Heap Size -Xmx1024m reicht nicht! Allgemeine Java-Themen 14
E Konfigurieren des Java Heap-Spaces Allgemeine Java-Themen 5
D Java Heap error trotz anpassungen mit -xmx Allgemeine Java-Themen 4
P Java Heap Size feststellen Allgemeine Java-Themen 6
G Probleme mit dem Java heap Allgemeine Java-Themen 14
S Java Heap Dump erstellen Allgemeine Java-Themen 1
P Java heap Allgemeine Java-Themen 5
P Jave Heap Size und ObjectStreams.ein java bug ? Allgemeine Java-Themen 5
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14

Ähnliche Java Themen

Neue Themen


Oben