应该是你把整个excel文件加载到内存的原因吧!

解决方案 »

  1.   

    有没有办法清excel文件加载的内存呢?
    是不是线程阻塞的问题?Process .waitFor();应该怎么样控制?
      

  2.   

    有没有办法清excel文件加载的内存呢?
    是不是线程阻塞的问题?Process .waitFor();应该怎么样控制?
    你为什么要用pro.waitFor();呢?根据JDK里面说的:导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。我觉得你可以这样
    Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
    pro = null;
    当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
    你可以去参考下JDK文档
      

  3.   

    有没有办法清excel文件加载的内存呢?
    是不是线程阻塞的问题?Process .waitFor();应该怎么样控制?
    你为什么要用pro.waitFor();呢?根据JDK里面说的:导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。我觉得你可以这样
    Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
    pro = null;
    当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
    你可以去参考下JDK文档
    请问,java是怎么样回收这里excel产生的内存呢?
      

  4.   

    有没有办法清excel文件加载的内存呢?
    是不是线程阻塞的问题?Process .waitFor();应该怎么样控制?
    你为什么要用pro.waitFor();呢?根据JDK里面说的:导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。我觉得你可以这样
    Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
    pro = null;
    当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
    你可以去参考下JDK文档
    请问,java是怎么样回收这里excel产生的内存呢?
    这个我不清楚,你通过Runtime.getRuntime().exec方法是调用外部程序,这个内存java应该是没办法回收!
      

  5.   

    因为执行的过程中,要时间转换,我人为地增加了2秒来转换。Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
     pro = null;
      

  6.   

    有没有办法清excel文件加载的内存呢?
    是不是线程阻塞的问题?Process .waitFor();应该怎么样控制?
    你为什么要用pro.waitFor();呢?根据JDK里面说的:导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。我觉得你可以这样
    Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
    pro = null;
    当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
    你可以去参考下JDK文档
    请问,java是怎么样回收这里excel产生的内存呢?
    这个我不清楚,你通过Runtime.getRuntime().exec方法是调用外部程序,这个内存java应该是没办法回收!
    因为执行的过程中,要时间转换,我人为地增加了2秒来转换,执行完毕才往下执行。这样写会不会有问题??Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
      pro = null; 
    try{ Thread.sleep(2000);    }catch(InterruptedException e){} 
      

  7.   

    有没有办法清excel文件加载的内存呢?
    是不是线程阻塞的问题?Process .waitFor();应该怎么样控制?
    你为什么要用pro.waitFor();呢?根据JDK里面说的:导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。我觉得你可以这样
    Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
    pro = null;
    当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
    你可以去参考下JDK文档
    请问,java是怎么样回收这里excel产生的内存呢?
    这个我不清楚,你通过Runtime.getRuntime().exec方法是调用外部程序,这个内存java应该是没办法回收!
    因为执行的过程中,要时间转换,我人为地增加了2秒来转换,执行完毕才往下执行。这样写会不会有问题??Process pro=Runtime.getRuntime().exec("cmd /c start E:/data.vbs E:/hong.xla "+fileName);
      pro = null; 
    try{ Thread.sleep(2000);    }catch(InterruptedException e){} 
    你都写了,实际跑跑就知道了!