【问题标题】:papa parse memory leak error occure, parsing big filespapa 解析内存泄漏错误,解析大文件
【发布时间】:2016-08-19 23:23:41
【问题描述】:

我使用 papa parse 来加载大文件,可能超过 300MB。

数据是这样的:

138,KOO,"0,2"

141,KOO,"0,2"

149,KOO,"0,2"

161,KOO,"0,2"

195,KOO,"0,2"

199,KOO,"0,2"

202,KOO,"0,2"

213,KOO,"0,2"

216,KOO,"2,0"

.....

但是加载内存泄漏错误,IE和Chrome

来源:

if (scaffolds.length == -1) {
    console.log("1");
    $.ajax({
        dataType: "text",
        type: "post",
        url: "./data/" + currentParse + "_data.csv",
        success: function(result) {
            var geneData = CSVToArray(result);
            parseGene(Date.now(), scaffold, geneData, 0, "", [], [], 0);
        }
    });
}
else {
    console.log("2");
    var groupNameAndScaffoldName = scaffold.name.split("@");
    var groupName = groupNameAndScaffoldName[0];
    var scaffoldName = groupNameAndScaffoldName[1];

    var data = [];
    Papa.parse("../data/dataset/" + sampleFolderName + "/" + groupName + "/" + scaffoldName + "_data.csv",{
        download: true,
        delimiter: "",  // auto-detect
        newline: "",    // auto-detect
        header: false,
        dynamicTyping: false,
        preview: 0,
        encoding: "",
        worker: true,
        comments: false,
        step: function(result, handle) {
            if (result.data[0][0]) {
                data.push(result.data[0]);
            }
        },
        complete: function() {
            parseGene(Date.now(), scaffold, data, 0, "", [], [], 0);
        },
        error: function(e) {
            console.log(e);
        },
        skipEmptyLines: true,
        chunk: undefined,
        fastMode: false
    });
}

如何调试?

【问题讨论】:

  • 如果该屏幕截图是网络选项卡,那不是内存泄漏。这只是 Papa Parse 按预期分块下载文件。
  • 谢谢。我如何使用这个来源的块。对不起,我是初学者。

标签: jquery ajax parsing csv memory


【解决方案1】:

@user3916421

如果你想使用块,你不能使用 step。然后,您可以使用 chunk 属性以与使用 step 相同的方式声明函数。另外,如果你想管理块大小,你可以在同一个配置对象中包含一个属性 chunkSize。

Papa.parse("../data/dataset/" + sampleFolderName + "/" + groupName + "/" + scaffoldName + "_data.csv",{
        download: true,
        delimiter: "",  // auto-detect
        newline: "",    // auto-detect
        header: false,
        dynamicTyping: false,
        preview: 0,
        encoding: "",
        worker: true,
        comments: false,
        complete: function() {
            parseGene(Date.now(), scaffold, data, 0, "", [], [], 0);
        },
        error: function(e) {
            console.log(e);
        },
        skipEmptyLines: true,
        chunk: function(result, handle) {
            if (result.data[0][0]) {
                data.push(result.data[0]);
            }
        },
        chunkSize: 1024 * 1024 //in bytes
        fastMode: false
    });

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多