1,如果在导出大数据量的时候内存溢出怎么办?
a,比如导出数据怎么算大小;
答:一个文件实际上开头一小部分内容标识此文件,然后其他的全部是文件内容,比如文件里面的数据有1000万行,每行如果有100列,其中每列都是一个浮点数,那么怎么算一个文件大概大小呢?如果映射出浮点数是double类型的话,可以这样算:比如double是64位就是8字节,8*100*1000w=8000000000这么多字节,再转换成MB或GB,就约等于7.45GB(当然正常情况下不会有这么大的文件内容)
b,怎么调整jvm内存?
答: 根据试算出的文件大小,一般扩容都会再原大小的基础上预留buffer空间,比如预留20%,就是要预留9GB的样子。
c,如果不跳整内存,是否有另外的办法支持
答:有,使用excel的流式处理类:SXSSFWorkbook,再创建此对象时可设置一个最大行数,这个参数就只保留指定行数的内容到内存。超出的都会刷新出去