有人知道对 GC 影响较小的快速 CSV 解析器吗?例如 SuperCsv 创建了太多对象(字符串),而 GC 对此不太高兴......
谢谢。
最佳答案
我建议您使用固定长度的 char[] 来从文件中读取内容,例如一次 10K 个字符,而不是创建字符串。根据一行中最有可能的最大字符数来确定 char[] 的大小。然后循环遍历 char[] 并查找逗号,。一旦找到逗号,就将位置保存在 int[] 中。因此,int[0] 表示第一个逗号位置,int[1] 表示第二个逗号,依此类推。每行重复使用 int[]。
这样您就不必为每一行声明任何变量。因此没有 GC 开销。您需要做的就是使用 int[] 中存储的位置从大 char[] 中读取每个字段的值并理解它。
关于java - 具有低 GC 负载的快速 CSV 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155308/