读取大图片总是报内存溢出~有哪位高手知道?BufferedImage image = javax.imageio.ImageIO.read(file)
1个回答
展开全部
File file = new File(imgPath); //imgPath是图片的存放路径
BufferedImage image = javax.imageio.ImageIO.read(file);报错:java.lang.OutOfMemoryError
: Java heap space
图片大小是3425px*4843px,我本机内存1g。
------解决方案--------------------------------------------------------
Xms Xmx 把jvm的heap 调大点 试试~~~
------解决方案--------------------------------------------------------
设置一下stack size的大小 java 后跟参数即可设置,具体参数如下:
-Xms size set initial Java heap size
-Xmx size set maximum Java heap size
-Xss size set java thread stack size
------解决方案--------------------------------------------------------
用java.exe -Xmx1024m -Xms256m ....来运行的程序,你机器是1G但是又没分配给jvm
------解决方案--------------------------------------------------------
ImageIO.read(File file)使用来自boolean getUseCache() 和 File getCacheDirectory()的当前缓存设置控制所创建的 ImageInputStream 中的缓存。其中getUseCache()默认设定是true,getCacheDirectory()返回的是setCacheDirectory(File cacheDirectory)所设定的目标,如果用户没有明显设定,那么getCacheDirectory()返回的将是null。
所以,你出现问题的原因可能是没有设定getUseCache(),那么取true;没有设定setCacheDirectory()那么返回null,,也就是你要图片存在用户缓存区但没给它设定,所以出现了内存不足的情况~~你不妨ImageIO.setCacheDirectory(File cacheDirectory)给它设定一个缓存路径试一试~~~
或者ImageIO.setUseCache(false)用系统缓存~~~~
BufferedImage image = javax.imageio.ImageIO.read(file);报错:java.lang.OutOfMemoryError
: Java heap space
图片大小是3425px*4843px,我本机内存1g。
------解决方案--------------------------------------------------------
Xms Xmx 把jvm的heap 调大点 试试~~~
------解决方案--------------------------------------------------------
设置一下stack size的大小 java 后跟参数即可设置,具体参数如下:
-Xms size set initial Java heap size
-Xmx size set maximum Java heap size
-Xss size set java thread stack size
------解决方案--------------------------------------------------------
用java.exe -Xmx1024m -Xms256m ....来运行的程序,你机器是1G但是又没分配给jvm
------解决方案--------------------------------------------------------
ImageIO.read(File file)使用来自boolean getUseCache() 和 File getCacheDirectory()的当前缓存设置控制所创建的 ImageInputStream 中的缓存。其中getUseCache()默认设定是true,getCacheDirectory()返回的是setCacheDirectory(File cacheDirectory)所设定的目标,如果用户没有明显设定,那么getCacheDirectory()返回的将是null。
所以,你出现问题的原因可能是没有设定getUseCache(),那么取true;没有设定setCacheDirectory()那么返回null,,也就是你要图片存在用户缓存区但没给它设定,所以出现了内存不足的情况~~你不妨ImageIO.setCacheDirectory(File cacheDirectory)给它设定一个缓存路径试一试~~~
或者ImageIO.setUseCache(false)用系统缓存~~~~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询