java - 性能解析 Csv 到 bean java
问题描述
无法读取 csv 文件有超过 500 万行
环境:Java 8、opencsv -version 4.6、Lunix、MySQL
我的代码:
public static <T> List<T> parseCsvToBeanPosition(Class<T> clazz, Reader readerInput) {
ColumnPositionMappingStrategy ms = new ColumnPositionMappingStrategy();
ms.setType(clazz);
CsvToBean<T> csvToBean =
new CsvToBeanBuilder(readerInput)
.withType(clazz)
.withMappingStrategy(ms)
.build();
return csvToBean.parse();
}
2019-06-21 16:38:13 [http-nio-8085-exec-2] INFO SynchronizeBusiness - Start parse: (SynchronizeBusiness.java:223)
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000abc80000, 284688384, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 284688384 bytes for committing reserved memory.
# An error report file with more information is saved as:
解决方案
看起来您的应用程序消耗的内存多于分配的内存(默认)。
- 将分配给 JVM 的内存增加到 -Xms2g -Xmx2g (如果需要增加更多并尝试一下)
推荐阅读
- ios - 在 iOS 中为 RTL 更改 NavigationBar 显示方向
- javascript - 如何从网页调用 exe(HTML、JavaScript)
- html - 按钮在反应中没有理由
- python - 获取每个组的前 n 个条目,其中每个组的 n 不同
- html-email - Outlook 2010 的电子邮件模板中出现白色间隙
- python - 连接被对方拒绝:111:连接被拒绝
- excel - 在搜索循环中设置变量列不工作,
- uwp - SerialDevice dispose 方法在某些情况下不起作用,Windows 10 IOT
- selenium - 无法使用 selenium Web 驱动程序在 Salesforce Lightning 上执行为 Salesforce Classic 编写的自动化测试脚本
- html - 使用 CSS 在文本下添加图像