I noticed a possible issue with the code generation, which may cause the issues with excessive heap allocation that were reported:
var code = 'return {\n';
columns.forEach(function(column) {
code += '"' + column.name + '":' + 'parser.readColumnValue(),\n';
});
code += '};\n';
var parseRow = new Function('columns', 'parser', code);
Instead of performing so many appends to a single string, I would try using map() and then join() the resulting strings:
var code = ['return {\n',
columns.map(function(column) {
return '"' + column.name + '":' + 'parser.readColumnValue(),\n';
}).join(''),
'};\n'].join('');
var parseRow = new Function('columns', 'parser', code);
Of course, this depends on how often the parseRow function is created...