程序大致如下
try{
..........
   is = new FileInputStream(FileName);
   rwb = Workbook.getWorkbook(is);
..........
}catch(Exception e)
{
  e.printStackTrace();
}
finally{
.............
}运行到rwb = Workbook.getWorkbook(is);的时候,直接没提示就去finally里面了,运行finally里面的才提示java.lang.OutOfMemoryError.
我是读取一个40多M的Excel表格。另:jxl/work.class里面
public static Workbook getWorkbook(InputStream is) throws IOException, BiffException { return null;}我的虚拟机内存有64M。请问这个异常该怎么避免呢?

解决方案 »

  1.   

     if (rwb != null) {
                    rwb.close();
                }
    关了的。
      

  2.   

    虚拟机默认只有64M内存,读取文件有40M,应该会出现内存不足。
    运行时加上参数,指定虚拟机内存看行不行。如
    java -Xms256M -Xmx512M yourclass
    指定虚拟机内存最大512M,最小256M。
      

  3.   

    理论上这种逻辑是不该出现的你最好把代码都给贴出来以便更好的找到错误
    ——————————————————————————
    if (rwb != null) {
                    rwb.close();
                }
    关了的。——————————————————————————
    为什么要这样关呢是rwb不等于空的时候就给关闭了?
      

  4.   

    我是读取一个40多M的Excel表格。64M太小了,你设置128M看看吧
      

  5.   


    恩,我设置set JAVA_OPTS=-Xms256m -Xmx768m后,可以运行了。
      

  6.   

    我这个是等他读取完了这么关了。如果rwb=null,就没必要关了吧?