java应用程序中的缓冲图像问题

时间:2015-06-24 12:07:53

标签: java image buffer heap rgb

我想实现一个BufferedImage课程,所以我添加了这个片段

BufferedImage bufferedImage = new BufferedImage(7232, 7204, BufferedImage.TYPE_INT_RGB);

但我得到了一个奇怪的例外

  

java.lang.OutOfMemoryError:Java堆空间

所以我需要知道:

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您需要确保以足够的堆空间启动运行此程序的JVM。命令行选项-Xmx设置jvm可用的最大堆数。例如: java -Xmx 2048m

设置此参数的方法有多种,具体取决于您启动程序的方式。如果您直接从命令行启动它,则上述方法有效,但如果您使用的是Eclipse等IDE,则可能需要查看“运行”或“启动”配置。

但是,jvm可用的堆空间量有限制,由机器的系统属性(硬件约束)定义。

另请参阅How to deal with "java.lang.OutOfMemoryError: Java heap space" error (64MB heap size)进行深入讨论。

编辑: BufferedImage似乎在内存中加载位图,这可以使您的应用程序真正快速地占用内存。如果你想在渲染之前操作图像,这很好,但如果你只是想显示图像可能有点矫枉过正。 我在Java中处理图像的经验非常有限,我不知道在处理图像时允许降低内存消耗的任何类,但是Make a BufferedImage use less RAM?提出了一种解决方案,在读取时图像缩小,因此BufferedImages使用更少的内存。我不知道它是否有效,但它可能会指向正确的方向。

P.S。如果不是所有问题,Google都是您的朋友; - )

相关问题