精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-29
linenlin01 写道 ddkk 写道 linenlin01 写道 每个Export new 一个 TestExcelExport 对象!!!如果出现OOM,你得考虑换一个写Excel的方式,拒绝POI,拒绝JXL。用文件流来写,避免创建太多对象,导致OOM。
POI,JXL这种都是每个CELL一个OBJECT,很多字节的 当初也用过以二进制流写成BIFF格式,网上有个例子,还有个BUG,改了一个 << 操作的地方才可以的 但是发现用EXCEL 2003还是2007打开后,不能修改,格式也不好控制 LZ试下BIRD-X 其实我更喜欢直接写出html文本流,然后加一个xls扩展名:) 这个太假,我都不说了 |
|
返回顶楼 | |
发表时间:2011-10-29
guanlicome 写道 晕,用fork() / join()啊。
大数据量excel导出,并发不是问题。 容易内存不足才是真正的问题。 以下是公司内部文档。 SQL部分 Mysqlで大量データ(10w件ぐらい)をselectしたら、「java.sql.SQLException: something wrong caused by java.lang.OutOfMemoryError: Java heap space」が発生します。 解決方法 SQL部分は改ページの方式で検索を行います。10000行/回で、Loop処理にします。 検索際、リターン値が (List<DataMap>)タイプです。その際、「at java.util.HashMap.newValueIterator(HashMap.java:843)」例外が起こします。 1.解決方法:arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。http://forums.sun.com/thread.jspa?threadID=5245397 2.解決方法:不制作一个大数组,根据查询的结果来实现业务处理逻辑。 POI部分 POI在创建cell的时候消耗了大量的内存,没有及时回收。 1.解決方法:多调用flush(),但对于nW件的效果不明显。 2.解決方法: http://www.docjar.org/html/api/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java.html a. create a template workbook, create sheets and global objects such as cell styles, number formats, etc. b. create an application that streams data in a text file.(Writer fw = new OutputStreamWriter(new FileOutputStream(tmp), "UTF8"); ) c. Substitute the sheet in the template with the generated data. 模板和数据怎么应用POI融合?? |
|
返回顶楼 | |
发表时间:2011-10-30
最后修改:2011-10-30
有个类叫ThreadLocal
全局变量改成与当前线程绑定,你那个类还是可以用单实例。 |
|
返回顶楼 | |
发表时间:2011-10-30
zean 写道 有个类叫ThreadLocal
全局变量改成与当前线程绑定,你那个类还是可以用单实例。 嗯,抽空测试下看看 |
|
返回顶楼 | |