当前位置: 首页 > 知识库问答 >
问题:

在IntelliJ IDEA中正确设置堆大小

佘辰龙
2023-03-14

我在IntelliJ IDEA中运行处理应用程序时遇到了一个特殊的问题。我想保存一个大图像,为此我遇到以下异常:

异常在线程"动画线程"java.lang.OutOfMemoryError: Java堆空间在java.awt.image.DataBufferInt.(DataBufferInt.java:75)在java.awt.image.Raster.createPackedRaster(Raster.java:467)在java.awt.image.DirectColorModel.create兼容WritableRaster(DirectColorModel.java:1032)在java.awt.image.BufferedImage。(BufferedImage.java:331)在processing.core.PImage.saveImageIO(PImage.java:3117)在processing.core.PImage.save(PImage.java:3297)--18/>)在Main VecField.draw(Main VecField. java: 93)在处理. core。PApplet. handleDraw(PApplet. java: 2305)在处理. core。请求绘图(PGraphicsJava2D. java: 243)运行(PApplet. java: 2176)在java. lang。线程.运行(线程. java: 724)

显然这里存在内存分配问题。问题是,当我在IntelliJ中更改. vm选项文件时,我得到了相同的结果,它们没有任何效果。IDE右下角的“内存”数量相应增加,但它似乎并没有让我的应用程序分配更多的内存。

当我在处理IDE中运行处理应用程序时,我可以通过设置较大的堆大小来保存更大的文件。

在IntelliJ没有什么超过256mb似乎有什么不同。所以我的问题是如何在IntelliJ中设置更大的堆大小,以允许我的应用程序分配更多的内存?

谢谢你的帮助!

我为我的项目附上代码,以防有人想测试它:

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

共有2个答案

长孙和悦
2023-03-14

IntelliJ向您显示使用的数量和堆的当前大小。您正试图设置它不显示的最大值。

通过运行jvisualvm

温智明
2023-03-14

更改vmoptions文件会调整IntelliJ使用的内存,但您现在遇到的是IntelliJ启动用于执行应用程序的JRE内存不足。您需要在运行/调试配置的VM选项部分调整内存设置,例如:

 类似资料:
  • 问题内容: 我试图通过向catalina.sh添加以下行来调整tomcat 7(CentOS,java -version:1.6.0_25-b06)实例的初始堆大小: 启动tomcat失败,并将以下消息记录到catalina.out: 这些选项有什么问题? 问题答案: 您不得使用。只需使用以下命令:

  • 问题内容: 有没有办法从正在运行的Java程序中设置堆大小? 问题答案: 没有。 对于具有非常多的堆需求的应用程序,您可以做的是设置最大的堆大小-Xmx并进行调整,以使堆缩小时该应用程序不会挂在大量内存上(使用默认设置即可) )。 但是请注意,当应用程序实际使用的内存变化剧烈且快速时,这可能会导致性能问题-在这种情况下,最好将其挂在所有内存上,而不是仅将其退还给操作系统以声明使用它再过一秒钟。您可

  • 本文向大家介绍在C ++中正确使用堆栈和堆?,包括了在C ++中正确使用堆栈和堆?的使用技巧和注意事项,需要的朋友参考一下 堆栈-函数内部声明的所有变量将占用堆栈中的内存。因此,函数内的任何局部变量都位于堆栈中。 堆-这是程序的未使用内存,可用于在程序运行时动态分配内存。因此,如果我们希望某些东西的寿命比声明它的函数的寿命更长,则必须在堆上分配它。 示例 堆内存中的主要问题是碎片,而堆栈中更容易出

  • 我是Java的初学者,刚开始使用Intellij作为我的IDE。 当我使用它时,有时会延迟。 我更改了我的 xms 和 xmx 以获得更大的堆大小(xms = 1024,xmx = 2048),但它抛出了一个错误。 所以,我把它回滚了。 错误消息是这样的:“初始堆大小设置为大于最大堆大小的值”。 有什么问题? 如果可能,如何增加最大堆大小? 我用的是笔记本电脑,它有8GB内存。x64Intelli

  • 我有一个Grails 2.3。X项目,除非使用命令行参数指定更多堆栈大小,否则无法编译。目前这很好,但每次我第一次构建项目时都需要导出/设置JVM选项。此外,刚开始项目的开发人员总是会遇到这个问题,所以我希望它成为签出版本控制的代码的一部分。 有没有办法在Grails 2.3中设置stacksize(-Xss)JVM选项。X BuildConfig? P、 Xss JVM选项是文档较少的选项之一。

  • 问题内容: 我正在尝试构建 Android Java项目 分支:feature-Fprototype_app 我收到此错误: 在jenkins配置的 “生成后操作”中, 我尝试在“ 其他属性” 框中设置(因为当我搜索错误时,人们建议为源设置正确的路径)。我尝试了许多组合,例如: 还是一样的错误。我究竟做错了什么 ? 好的,让我清除我造成的混乱。 首先,这是一个Android Maven项目。包结构