【发布时间】:2017-09-16 07:16:31
【问题描述】:
我需要使用 apache POI 生成带有大量重复字符串的 excel,但它似乎没有针对这种情况进行优化,那么如何有效地生成 excel 以重用重复字符串的内存?
【问题讨论】:
-
不太清楚你的意思是什么字符串。
标签: java string apache-poi heap-memory
我需要使用 apache POI 生成带有大量重复字符串的 excel,但它似乎没有针对这种情况进行优化,那么如何有效地生成 excel 以重用重复字符串的内存?
【问题讨论】:
标签: java string apache-poi heap-memory
在堆内存方面,如果字符串是使用intern() 创建的,那么工作就差不多完成了。
实现跨工作簿共享的单个字符串表的目标是通过仅读取和写入重复信息一次来提高打开和保存文件的性能。
但是正如您所说,在您的 POI excel 文件中使用了很多类似的字符串,那么您可以使用 SharedStringsTable 概念来有效利用。见这里SharedStringsTable_Ex1 & SharedStringsTable _Ex2
【讨论】:
使用 Java 8,您可以启用字符串重复数据删除 (-XX:+UseStringDeduplication),有关详细信息,请参阅 String Deduplication feature of Java 8。这减少了所有重复字符串的占用空间,即使是那些没有实习生创建的字符串。
【讨论】: