如何编写映像而不会耗尽Java中的内存?

时间:2010-10-24 13:54:40

标签: java out-of-memory bufferedimage graphics2d

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

this问题中的完整代码)。

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

无论如何不能用更少的内存绘制图像?我正在使用A4尺寸的BMP进行打印,只能使用文字。大多数时候它只是黑白,而有时我也需要使用蓝色,粉红色和灰色。

1 个答案:

答案 0 :(得分:0)

对于你问题中陈述的事实,有一些非常可疑的事情。除非我被误认为,BufferedImage每像素使用1个字节,因此3500 x 2480个字节...大约10M字节。但是你声称已经将堆大小设置为3Gbytes。

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