title: string.split() "Out of memory exception" when reading tab separated file
body: <p>I am using string.split() in my C# code for reading tab separated file. I am facing "OutOfMemory exception" as mentioned below in code sample.</p>
  
  <p>Here I would like to know why problem is coming for file having size 16 MB? </p>
  
  <p>This is right approach or not? </p>
  
  <pre><code>using (StreamReader reader = new StreamReader(_path))
  {
    //...........Load the first line of the file................
    string headerLine = reader.ReadLine();
  
    MeterDataIPValueList objMeterDataList = new MeterDataIPValueList();
    string[] seperator = new string[1];   //used to sepreate lines of file
  
    seperator[0] = "\r\n";
    //.............Load Records of file into string array and remove all empty lines of file.................
    string[] line = reader.ReadToEnd().Split(seperator, StringSplitOptions.RemoveEmptyEntries);
    int noOfLines = line.Count();
    if (noOfLines == 0)
    {
      mFileValidationErrors.Append(ConstMsgStrings.headerOnly + Environment.NewLine);
    }
    //...............If file contains records also with header line..............
    else
    {
      string[] headers = headerLine.Split('\t');
      int noOfColumns = headers.Count();
  
      //.........Create table structure.............
      objValidateRecordsTable.Columns.Add("SerialNo");
      objValidateRecordsTable.Columns.Add("SurveyDate");
      objValidateRecordsTable.Columns.Add("Interval");
      objValidateRecordsTable.Columns.Add("Status");
      objValidateRecordsTable.Columns.Add("Consumption");
  
      //........Fill objValidateRecordsTable table by string array contents ............
  
      int recordNumber;  // used for log
      #region ..............Fill objValidateRecordsTable.....................
      seperator[0] = "\t";
      for (int lineNo = 0; lineNo &lt; noOfLines; lineNo++)
      {
        recordNumber = lineNo + 1;
        **string[] recordFields = line[lineNo].Split(seperator, StringSplitOptions.RemoveEmptyEntries);** // Showing me error when we  split columns
        if (recordFields.Count() == noOfColumns)
        {
          //Do processing
        }
  </code></pre>