如果只是读一张图就outofmemory的话,建议换个读文件的包,自己找找,应该是有不少的

解决方案 »

  1.   

    getToolkit().createImage("test.jpg")就是Java SDK 本身带的包,应该占用内存最小的。我用过BufferedImage 也有问题。上面说的那幅图,如果不压缩,应该占用100M左右的内存。
      

  2.   

    修改jvm的xmx不能解决问题,你永远没法知道将操作的最大的图片可能是多大
    以前项目中遇到过,一次BufferedImage大约4屏幕的png图片就会outofmem
    只好剪裁采用图片组管理。
    至于读取大图片,可选的办法肯定还是分而治之
    不过并不需要自己写管理器,建议研究jdk关于图片处理的生产者-消费者模型
      

  3.   

    我也想到分而治之,可是一个图片处理起来太麻烦了。
    要把一个图像分成一些小的图像,显示完整的图像需要做许多处理。好像可以用Java plug-in  设置,可是我的XP中的为什么找不到 Java plug-in?