Совместное использование Chrome Windows JavaScript-объектов window.opener - утечка памяти и высокая загрузка ЦП? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть приложение, которое открывает несколько дочерних окон из главного окна через window.open().

Родительское окно копирует объект JavaScript из хранилищаact-redux и сохраняет его в функции внутри объекта window как таковой window.getData() { return parentStore; }. В дочерних окнах он получает объект JavaScript, вызывая window.opener.getData() и сохраняет его как parentStore в хранилище с избыточностью. Каждое дочернее окно прослушивает потоки данных, которые поступают каждые несколько секунд, и объект parentStore обновляется в хранилище с избыточностью.

Кроме того, некоторые пользовательские действия в дочерних окнах также инициируют обновление объекта окна как таковое window.store = updates.

Объем памяти этого приложения удваивается с каждым новым окном и продолжает увеличиваться. Загрузка ЦП в диспетчере задач Chrome также увеличивается> 100% каждые несколько секунд. Эти проблемы вызвали проблемы с производительностью, когда приложение стало практически непригодным для использования.

Мои вопросы: поскольку объект window, передаваемый дочерним окнам, фактически является ссылкой из исходного окна, действительно ли дочерние окна обновляют тот же объект, когда он обновляет parentStore в избыточном хранилище и window.store объектов? И, таким образом, вызывает высокую загрузку процессора, потому что все они пытаются обновить один и тот же объект сразу? И если да, то как этого избежать или решить?

Ценю любые мысли по этому вопросу.

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