Définition correcte de la taille de segment dans IntelliJ IDEA

J’ai ce problème particulier d’exécuter une application de traitement dans IntelliJ IDEA. Je veux enregistrer une grande image et pour ce faire, je cours à l’exception suivante:

Exception dans le fil “Animation Thread” java.lang.OutOfMemoryError: espace de segment de mémoire Java dans java.awt.image.DataBufferInt. (DataBufferInt.java:75) sur java.awt.image.Raster.createPackedRack (Raster.java:467). java.awt.image.DirectColorModel.createCompatibleWritableRaster (DirectColorModel.java:1032) à l’adresse java.awt.image.BufferedImage. (BufferedImage.java:331) lors du traitement. core.PImage.save (PImage.java:3297) sur OffScreenRender.stopRender (OffScreenRender.java:38) sur MainVecField.draw (MainVecField.java:93) sur processing.core.PApplet.handleDraw (PApplet.java:2305) processing.core.PGraphicsJava2D.requestDraw (PGraphicsJava2D.java:243) à processing.core.PApplet.run (PApplet.java:2176) à java.lang.Thread.run (Thread.java:724)

Il est donc clair qu’il existe un problème d’allocation de mémoire. Le problème est que lorsque je modifie les fichiers .vmoptions dans IntelliJ, je reçois les mêmes résultats, ils n’ont aucun effet. Le nombre de “memory” dans le coin inférieur droit de l’EDI augmente en conséquence, mais il ne semble pas laisser mon application allouer plus de mémoire.

Lorsque j’exécute l’application de traitement dans l’EDI de traitement, je peux enregistrer des fichiers beaucoup plus volumineux en définissant une taille de segment de mémoire importante.

Dans IntelliJ, rien de plus de 256 Mo ne semble faire la différence. Ma question est donc la suivante: comment définir une taille de segment de mémoire plus grande dans IntelliJ permettant à mon application d’allouer plus de mémoire?

Merci de votre aide!

Je joins le code de mon projet au cas où quelqu’un voudrait le tester:

import processing.core.*; public class TestClassMain extends PApplet { public static void main(Ssortingng args[]) { PApplet.main(new Ssortingng[] { "--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"); } } 

Changer le fichier vmoptions ajuste la mémoire utilisée par IntelliJ, mais vous rencontrez ici un manque de mémoire de JRE lancé par IntelliJ pour exécuter votre application. Vous devez ajuster le paramètre de mémoire dans les options de la machine virtuelle de la configuration Exécuter / Déboguer, par exemple:

entrez la description de l'image ici

IntelliJ vous indique la quantité utilisée et la taille actuelle du segment de mémoire. Vous essayez de définir le maximum qu’il ne montre pas.

Vous pouvez attacher VisualVM à IntellIJ pour voir le maximum en exécutant jvisualvm