代码之家  ›  专栏  ›  技术社区  ›  maaartinus

使用axios的内存泄漏

  •  4
  • maaartinus  · 技术社区  · 8 年前

    我正在使用reactjs和axios启动一个应用程序。它获取一些相当大的JSON数据,几分钟后,Chromium停止写入“在潜在内存不足泄漏之前暂停”。看起来所有提取的数据都存储在某个地方,但我不明白如何存储。代码看起来像

    let result = axios({...});
    result = result.then((response) => {
        ... read status and headers, pass them to other functions
        return response;
    }, (error) => {
        ... never executed similar processing
        return response; // error processing done
    });
    if (method === "get") {
        result = result.then((response) => {
            ... some header processing
        }
    }
    return null; // currently, the result is no more needed
    

    没有一个地方会泄露响应数据。。。我还不需要它们,因为我目前只关心获取逻辑。承诺不出方法不做 response response.data . 但2 GB内存快照显示获取的JSON数据:

    leak

    在匿名模式下也会发生这种情况,其中没有运行扩展。最可疑的一行是“未决活动”。我不理解其中的很多东西,例如,为什么它会列在下面的编译代码中(它只是数据,带有不可执行前缀的JSON,我从未接触过它)。

    我从CreateReact应用程序开始,安装了以下程序

      "dependencies": {
        "axios": "^0.18.0",
        "flow-bin": "^0.75.0",
        "json-stable-stringify": "^1.0.1",
        "react": "^16.4.1",
        "react-bootstrap": "^0.32.1",
        "react-burger-menu": "^2.5.2",
        "react-dom": "^16.4.1",
        "react-scripts": "1.1.4",
        "react-select": "^1.2.1",
        "react-sidemenu": "0.0.14",
        "serve": "^9.1.0"
      },
    

    写了这一切之后,我发现问题确实存在 当chrome开发工具关闭时发生,因此这并不重要。然而,我有一个angularjs应用程序获取相同的数据,没有这样的问题。

    有人知道是什么原因导致了泄漏,我如何才能消除它?

    0 回复  |  直到 8 年前