首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用BufferedImage创建非常大的图像文件,根据编译和计算机的不同而出现奇怪的问题

使用BufferedImage创建非常大的图像文件,根据编译和计算机的不同而出现奇怪的问题
EN

Stack Overflow用户
提问于 2009-06-07 12:20:12
回答 2查看 5.4K关注 0票数 1

我正在尝试用Java创建一个非常大的图像,如下所示:

BufferedImage bi =新的BufferedImage(58240,1664,BufferedImage.TYPE_INT_RGB);

显然,图像非常大。

现在我遇到的问题是,它似乎在一些计算机上100%正常工作,但在其他计算机上运行得很慢(不,这与规格无关)。

我最大的突破是在Eclipse中,IDE拒绝实际显示图像,而是在一台显示图像非常慢的计算机上抛出错误(需要相当长的时间来调整图像大小等等):

线程"AWT-EventQueue-0“java.lang.OutOfMemoryError中出现异常: Java堆空间

这个错误的另一个有趣的元素是,即使在它运行缓慢的计算机上,我也可以调整它所在的窗口的大小,直到不再调用paint函数,然后再将它变大,如果我做得“正确”,它以100%的速度运行。

不知道发生了什么,有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-07 12:30:54

您的应用程序内存不足-如果我计算正确,该图像大约需要280MB。

Java程序允许使用的最大内存量(堆空间)是在JVM启动时固定的,该限制的设置方式因JVM实现和版本的不同而有所不同。当内存耗尽或接近极限时,JVM将花费大量时间进行垃圾收集,这将大大减慢它的速度。

也许你唯一需要做的就是给应用程序更多的堆空间;这是通过-Xmx command line parameter完成的。

票数 7
EN

Stack Overflow用户

发布于 2009-06-07 12:26:00

问题出在Java Virtual Machine的堆大小上--抛出OutOfMemoryError的系统上的堆大小是不够的。

如果问题出现在运行Sun JVM的系统上,则可以使用Sun's JVM-specific options更改JVM的堆大小。

从Sun的Java6开始,default values for the heap size is determined by the amount of system memory,但也可以被-Xms选项和-Xmx选项覆盖,前者更改最小堆大小,后者更改最大堆大小。默认情况下,最小堆大小是物理内存量的1/64,最大是物理内存量的1/4。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/961795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档