gpt4 book ai didi

java - 避免在 JXL 调用 WritableWorkbook.close() 时停止

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:26 25 4
gpt4 key购买 nike

我们发现,当使用 JXL 生成 xls 时,调用 WritableWorkbook.close() 会停止系统。看来资源没有释放。

Someone has also encountered this problem but no answer was given

我们测试了 JXL 的多个版本,但没有任何变化。问题出在哪里?

book.write();
//close() caused halting
book.close();

最佳答案

调查源码后发现,调用WritableWorkbook.close()时,默认行为每次都会调用System.gc()!

void close(boolean cs) throws IOException, JxlWriteException {
CompoundFile cf = new CompoundFile(data,
data.getPosition(),
outputStream,
readCompoundFile);
cf.write();

outputStream.flush();
data.close();

if (cs) {
outputStream.close();
}

// Cleanup the memory a bit
data = null;

if (!workbookSettings.getGCDisabled()) {
System.gc();
}
}

有两种方法可以通过系统属性来避免这种情况

  • jxl.nogc=true ,禁用JXL的gc(在jvm参数中添加-Djxl.nogc=true)
  • XX:+DisableExplicitGC ,禁用所有显式GC(这在大多数情况下是可取的)。

关于java - 避免在 JXL 调用 WritableWorkbook.close() 时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21301785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com