Реагировать на всеобщую утечку памяти из-за редукса - PullRequest
0 голосов
/ 09 мая 2018

Я работаю над изоморфным приложением React, которое использует redux и redux-saga. Моя проблема заключается в том, что процесс узла, который запускает приложение, занимает все больше и больше памяти по мере обработки запросов, пока в конце концов не закончится память.

Я профилировал приложение с помощью node --inspect и заметил, что библиотека saga продолжает создавать в памяти ссылки на типы (array), которые никогда не очищаются даже после запуска сборки мусора.

Чтобы проверить проблему, запустите этот проект и профилируйте его с помощью chrome-devtools: https://github.com/MartinCerny-awin/isomorphic-react-redux-saga-ssr

(не мой проект, но, похоже, ведет себя так же)

Heap Snapshot Вы можете увидеть эти объекты в куче diff: updateState in system / Context @1770579 context in cancel()

Я пытался связать хранилище избыточностей и промежуточное программное обеспечение саги с экспрессом response, думая, что это проблема пространства имен запроса, но это не решает.

1 Ответ

0 голосов
/ 18 мая 2018

Redux saga Отмена задачи предотвратит утечки памяти.

ОТМЕНА САГ С ПОМОЩЬЮ ИЗМЕНЕНИЯ КОМПОНЕНТА / МАРШРУТА

Я думаю, проблема в том, что вы не отменяете саги после того, как компонент, связанный с сагой, размонтируется. Это может привести к утечке памяти, поскольку сага продолжает ждать действия и не завершается.

    import { LOCATION_CHANGE } from 'react-router-redux';
    // other imports

    function* rootSaga() {
      const watcher = yield [
        takeLatest(GET_TODO, getToDoSaga),
        // your other sagas
      ];

      // the saga gets cancelled when your route changes. Instead 
      // a custom action can also be dispatched from your
      // componentWillUnMount of ToDo component
      yield take(LOCATION_CHANGE); 
      yield watcher.map((task) => cancel(task));
    }

    export default [
      rootSaga,
    ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...