File file = new File(imgPath); //imgPath是图片的存放路径BufferedImage image = javax.imageio.ImageIO.read(file);报错:java.lang.OutOfMemoryError: Java heap space
图片大小是3425px*4843px,我本机内存1g。除了扩内存,还有别的方法么?

解决方案 »

  1.   

    Xms Xmx 把jvm的heap 调大点 试试~~~
      

  2.   

    设置一下stack size的大小 java 后跟参数即可设置,具体参数如下:
    -Xms  size         set initial Java heap size 
    -Xmx size        set maximum Java heap size 
    -Xss size         set java thread stack size 
      

  3.   

    用java.exe  -Xmx1024m -Xms256m ....来运行的程序,你机器是1G但是又没分配给jvm
      

  4.   

    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)用系统缓存~~~~
      

  5.   

    不行。我在read之前,之后都ImageIO.setCacheDirectory(File cacheDirectory) or ImageIO.setUseCache(false),都不行。唉,图片还是太大,溢出了。