Einstellung-heap-Größe in IntelliJ IDEA korrekt
Ich habe dieses eigenartige problem mit dem Betrieb eines Processing-Anwendung in IntelliJ IDEA. Ich will sparen, ein großes Bild und dazu Lauf ich zu der folgenden Ausnahme:
Exception in thread "Animation Thread" java.lang.OutOfMemoryError: Java heap space
bei java.das awt.Bild.DataBufferInt.(DataBufferInt.java:75)
bei java.das awt.Bild.Raster.createPackedRaster(Raster.java:467)
bei java.das awt.Bild.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1032)
bei java.das awt.Bild.BufferedImage.(BufferedImage.java:331)
bei der Verarbeitung.core.PImage.saveImageIO(PImage.java:3117)
bei der Verarbeitung.core.PImage.speichern(PImage.java:3297)
bei OffScreenRender.stopRender(OffScreenRender.java:38)
bei MainVecField.zeichnen(MainVecField.java:93)
bei der Verarbeitung.core.PApplet.handleDraw(PApplet.java:2305)
bei der Verarbeitung.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
bei der Verarbeitung.core.PApplet.run(PApplet.java:2176)
bei java.lang.Thread.run(Thread.java:724)
Also klar gibt es einige memory allocation problem hier. Das problem ist, dass wenn ich das ändern .vmoptions-Dateien in IntelliJ bekomme ich die gleichen Ergebnisse, haben Sie keine Auswirkungen. Die "memory" - Zahl an der unteren rechten Ecke der IDE-erhöht sich entsprechend, aber es scheint nicht zu lassen, meine Anwendung mehr Speicher zuzuweisen.
Wenn ich die processing-Anwendung in der processing-IDE, die ich verwalten können, um zu speichern viel größerer Dateien, indem Sie eine große heap-Größe.
In IntelliJ nichts über 256mb scheint einen Unterschied zu machen. Also meine Frage ist wie richte ich eine größere heap-Größe in IntelliJ, die erlaubt, dass meine Anwendung mehr Speicher zuzuweisen?
Danke für Eure Hilfe!
Füge ich den code für mein Projekt im Fall, dass jemand will, um es zu testen:
import processing.core.*;
public class TestClassMain extends PApplet
{
public static void main(String args[])
{
PApplet.main(new String[] { "--present", "TestClassMain" });
}
//Global variables
OffScreenRender screenRender;
int c = 0;
//Variables for offScreenRender
int resFactor = 10;
boolean offScreenRenderSwitch = false;
public void setup()
{
size(1000,700);
background(0);
stroke(255);
//Initialize the render object
screenRender = new OffScreenRender(this, 11000, 7950, resFactor);
}
public void draw()
{
frameRate(30);
stroke(255);
//Check if the render should be saved
if(offScreenRenderSwitch == true){screenRender.startRender();}
background(0,0,0);
rect(20+c,height/2,60,60);
if(offScreenRenderSwitch == true)
{
screenRender.stopRender();
offScreenRenderSwitch = false;
}
c += 2;
}
public void keyPressed()
{
//Render the graphics to an offScreen buffer
offScreenRenderSwitch = true;
}
}
import processing.core.*;
/**
* Renders the processingsketch to a .tif file at specified resolution.
*/
public class OffScreenRender
{
PApplet parent; //The parent PApplet
PGraphics render;
int width;
int height;
int resFactor;
OffScreenRender(PApplet p, int width_, int height_, int resFactor_)
{
//Initialize variables
parent = p;
width = width_;
height = height_;
resFactor = resFactor_;
render = parent.createGraphics(width, height);
}
//Render the image
void startRender()
{
parent.beginRecord(render);
render.scale(resFactor);
PApplet.println("first step");
}
//Render the image
void stopRender()
{
parent.endRecord();
PApplet.println("second step");
render.save("hej");
PApplet.println("final step");
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern vmoptions-Datei passt der Arbeitsspeicher, der von IntelliJ, aber was Sie haben ist hier ein Mangel an Speicher der JRE gestartet wird von IntelliJ ausführen Ihrer Anwendung. Sie müssen passen Sie die Speicher-Einstellung in VM-Optionen Teil der Run/Debug-Konfiguration, zum Beispiel:
-Xmx1024m
(ohne die Leerzeichen) anstatt-Xmx 1024m
IntelliJ zeigt Ihnen die verwendete Menge und die aktuelle Größe des Heaps. Sie versuchen, die maximale, die es nicht zeigen.
Können Sie VisualVM auf IntellIJ zu sehen, die maximal durch ausführen
jvisualvm
jvisualvm
Nach dem Start und findet die JVM auf Ihrem system läuft, wählen SieIntelliJ IDEA
. Es ist wirklich einfach, Sie sollten es versuchen.