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");
    }
}
Schreibe einen Kommentar