如何在Java中编写图像而不耗尽内存?

如何在Java中编写图像而不耗尽内存?,java,out-of-memory,bufferedimage,graphics2d,Java,Out Of Memory,Bufferedimage,Graphics2d,(有问题的完整代码) 虽然我已经将jvm属性设置为3GB,但这段代码会导致Java堆空间异常。这可能是问题所在吗 无论如何,难道不可能用更少的内存来绘制图像吗?我在寻找一个A4大小的BMP打印,只有文本。大多数情况下,它只是黑白的,而有时我也需要使用蓝色、粉色和灰色。你的问题中所陈述的事实有些可疑。除非我错了,buffereImage每像素使用1字节,因此3500 x 2480字节。。。大约10兆字节。但您声称已将堆大小设置为3GB 您实际使用了哪些JVM选项?Env.MAVEN_OPTS=-X

(有问题的完整代码)

虽然我已经将jvm属性设置为3GB,但这段代码会导致Java堆空间异常。这可能是问题所在吗


无论如何,难道不可能用更少的内存来绘制图像吗?我在寻找一个A4大小的BMP打印,只有文本。大多数情况下,它只是黑白的,而有时我也需要使用蓝色、粉色和灰色。

你的问题中所陈述的事实有些可疑。除非我错了,
buffereImage
每像素使用1字节,因此
3500 x 2480
字节。。。大约10兆字节。但您声称已将堆大小设置为3GB


您实际使用了哪些JVM选项?

Env.MAVEN_OPTS=-Xmx1024M(现在1GB),这是MAVEN构建的设置。运行应用程序时使用什么?是:install nbm:run platform的设置,这是我运行应用程序的方式。我认为您实际上是在为运行maven的JVM而不是运行应用程序的子JVM设置选项。我认为您应该使用“additionalArguments”此处描述的参数:由于您的链接问题不再可用(至少对我来说不可用),您可以在此处提供完整的代码吗?
final BufferedImage img = new BufferedImage(3500, 2480, BufferedImage.TYPE_BYTE_INDEXED);
final Graphics2D g2D = img.createGraphics();
g2D.setBackground(Color.white);
g2D.clearRect(0, 0, width, height);