Réglage de la taille de segment de mémoire dans IntelliJ IDEA correctement
J'ai ce problème particulier avec l'exécution d'une application de Traitement dans IntelliJ IDEA. Je veux enregistrer une image de grande dimension et pour ce faire, je suis à court de l'exception suivante:
Exception in thread d'Animation "Thread" de java.lang.OutOfMemoryError: Java heap space
à java.awt.image.DataBufferInt.(DataBufferInt.java:75)
à java.awt.image.Raster.createPackedRaster(Raster.java:467)
à java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1032)
à java.awt.image.BufferedImage.(BufferedImage.java:331)
au niveau de la transformation.de base.PImage.saveImageIO(PImage.java:3117)
au niveau de la transformation.de base.PImage.enregistrer(PImage.java:3297)
au OffScreenRender.stopRender(OffScreenRender.java:38)
au MainVecField.tirage(MainVecField.java:93)
au niveau de la transformation.de base.PApplet.handleDraw(PApplet.java:2305)
au niveau de la transformation.de base.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
au niveau de la transformation.de base.PApplet.exécuter(PApplet.java:2176)
à java.lang.Fil de discussion.exécution(Thread.java:724)
Donc clairement il y a quelques allocation de mémoire problème ici. Le problème est que lorsque je modifie le .vmoptions fichiers à l'Ide, j'obtiens les mêmes résultats, ils n'ont aucun effet. La "mémoire" le nombre dans le coin inférieur droit de l'IDE augmente en conséquence, mais il ne semble pas y laisser ma demande d'allouer plus de mémoire.
Quand je lance l'application de traitement dans le traitement de l'IDE, je peux gérer pour enregistrer des fichiers plus gros par la définition d'une grande taille de segment de mémoire.
À l'Ide, rien de plus de 256 mo de mémoire semble faire une différence. Donc ma question est comment puis-je configurer une plus grande taille de segment de mémoire à l'Ide, qui permet à ma demande d'allouer plus de mémoire?
Merci pour votre aide!
Je joins le code de mon projet au cas où quelqu'un veut le tester:
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");
}
}
OriginalL'auteur Lukas Arvidsson | 2013-09-05
Vous devez vous connecter pour publier un commentaire.
Changer vmoptions fichier ajuste la quantité de mémoire utilisée par l'Ide, mais ce que vous avez ici est un manque de mémoire de JRE qui est lancé par l'Ide pour l'exécution de votre application. Vous devez régler le paramètre de mémoire de la VM options le cadre de l'Exécution/Débogage de configuration, par exemple:
Le mien en fait échoué en essayant de suivre la réponse dans intelliJ IDEA 15 CE-pas Valide taille maximale du tas: -Xmx (1024m)
J'utilise
-Xmx1024m
(sans l'espace) plutôt que de-Xmx 1024m
OriginalL'auteur Vic
IntelliJ vous montre la quantité utilisée et la taille du tas. Vous essayez de définir le maximum qu'elle ne montre pas.
Vous pouvez joindre VisualVM à IntellIJ pour voir le maximum en exécutant
jvisualvm
Vous ouvrez un X-Terme ou de l'invite MS-DOS ou Démarrer -> Exécuter et tapez
jvisualvm
Après il démarre et recherche de la Jvm en cours d'exécution sur votre système, vous sélectionnezIntelliJ IDEA
. C'est très simple, vous devriez l'essayer.OriginalL'auteur Peter Lawrey