使用split进行大数据分割时内存溢出解决方案
2010-12-07 12:30
435 查看
某个文本文件中存储了60W条记录,以\r\n作为分隔符,现在需要从文本中一次性取出所有值并存放到一个string[]数组中。
StreamReader sr = new StreamReader(strFilePath, System.Text.UnicodeEncoding.GetEncoding("utf-8"));
string strContent = sr.ReadToEnd();
string[] strArr = strContent.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
以上方式非常不建议使用,当数据量很大时很容易抛出内存溢出异常,这是由于string类型自身的安全性导致的,不建议使用string类型的对象临时保存大量的数据。
我们应该采用下面的方式来进行大数据量的处理。
代码
StreamReader sr = new StreamReader(strFilePath, System.Text.UnicodeEncoding.GetEncoding("utf-8"));
string strContent = sr.ReadToEnd();
string[] strArr = strContent.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
以上方式非常不建议使用,当数据量很大时很容易抛出内存溢出异常,这是由于string类型自身的安全性导致的,不建议使用string类型的对象临时保存大量的数据。
我们应该采用下面的方式来进行大数据量的处理。
代码
List<string> List = new List<string>(); using (StreamReader _StreamReaderKey = new StreamReader(strTermCacheFilePath + fileInfo.Name)) { string strLine = ""; while (!string.IsNullOrEmpty((strLine = _StreamReaderKey.ReadLine()))) { List.Add(strLine); } }
相关文章推荐
- 字符串根据多个字符进行分割的一种方法(使用split而不是regex.split更不是replace)
- 使用ipython notebook读取GBK文件,进行split时无法分割
- 使用split进行分割时遇到特殊字符的问题
- sklearn.model_selection中的train_test_split使用方法,分割数据集,划分训练集和测试集
- 新手学,java使用分水岭算法进行图像分割(一)
- 在Python中用split()方法分割字符串的使用介绍
- [日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割
- [日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割(脚本)
- tomcat 使用log4j进行日志分割
- 新手学,java使用分水岭算法进行图像分割(二)
- 数据倾斜解决方案之六:使用随机数进行Join
- split多个分隔符进行分割
- JavaScript 使用split 以中英文逗号、空格(一个或多个)分割字符串
- Android数据库安全解决方案,使用SQLCipher进行加解密
- Android数据库安全解决方案,使用SQLCipher进行加解密
- Visual Studio使用小技巧3 &ndash; 标签分组(Tab Group)和分割窗口(Split window)
- Android数据库安全解决方案,使用SQLCipher进行加解密
- 使用POI3.8导出大数据excel方法(解决内存溢出)
- QT使用MySql的配置(使用addLibraryPath载入插件),编译QT的MySql驱动问题及解决方案(自己使用libmysql.lib进行编译mysql.pro,万不得已可以查看Makefile.Debug以解决问题)
- C#中使用Split方法分割字符串和Replaced的使用