每个SXSSFWorkbook workbook都有一个缓存,那他的缓存大小如何设置
时间: 2023-10-16 18:33:37 浏览: 51
是的,每个SXSSFWorkbook都有一个缓存,用于存储未写入磁盘的数据,缓存大小可以通过构造函数来设置。缺省情况下,缓存大小为100,也就是说每100行数据会被写入磁盘。可以使用如下代码设置缓存大小:
```
SXSSFWorkbook workbook = new SXSSFWorkbook(50); //设置缓存大小为50行
```
这里将缓存大小设置为50行,这意味着每50行数据会被写入磁盘,这样可以更好地控制内存的使用。但是缓存大小不是越小越好,如果设置得太小,写入磁盘的频率会变高,可能会影响程序的性能。因此需要根据实际情况来设置缓存大小。
相关问题
poi1.6 若使用SXSSFWorkbook 执行 workbook.write(outputStream); 会导致每100个row进行一次flush导致Stream流关闭如何解决
可以通过设置缓存窗口大小来解决这个问题。默认情况下,SXSSFWorkbook的缓存窗口大小为100,达到100行时会自动将缓存写入输出流并清空缓存。如果你不希望在100行时自动刷新,可以使用setCompressTempFiles()方法来设置缓存窗口大小。例如,你可以这样设置缓存窗口大小为1000:
```
SXSSFWorkbook workbook = new SXSSFWorkbook(1000);
workbook.setCompressTempFiles(false);
```
这样设置后,缓存窗口大小为1000,每1000行时会自动将缓存写入输出流并清空缓存。同时,设置setCompressTempFiles(false)可以避免在缓存写入输出流时关闭输出流。
SXSSFWorkbook每一百条数据是存入磁盘的,那么我创建500个workbook理应占用不了多少内存是吧?
不完全是这样的。虽然SXSSFWorkbook每100条数据就会将数据写入磁盘,但是创建500个workbook会占用大量的内存。每个workbook都有一个缓存,用于存储未写入磁盘的数据。当你创建500个workbook时,它们的缓存会占用大量内存,这可能会导致内存溢出,尤其是在数据量非常大的情况下。
为了避免这个问题,你可以尝试使用一个大的workbook来存储所有的数据,而不是创建多个小的workbook。此外,你也可以调整SXSSFWorkbook的缓存大小,以便更好地控制内存的使用。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)