утечка памяти из-за обновления большого количества файлов (gulp, watch)

121
02 сентября 2019, 07:50

проект представляет из себя что-то вроде:

app
=global (добавляется во все страницы)
====component_1
====component_2
==pages (куча страниц скажем 300)
====page_1
======page_1.css
======page_1.jade
======page_1.js
dist (сюда билдится все)
==page_1    
====global
======main.js
====page_1.js
====page_1.css
====index.html

есть таска gulp, которая следит за изменениями

для страниц на каждый вид файла:

const JSPageWatcher= gulp.watch('app/pages/**/*.js') //такая же на CSS и Jade
  JSPageWatcher.on('change', e => {
    console.log('File ' + e + ' was, running tasks...')
    slideJS(e.split('\\').pop().replace('.js', '')) 
  })

и для компонентов:

 gulp.watch('app/components/*.js', gulp.series('webpack')) //собирает все в main.js для каждой страницы

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

app\pages\4_44\4_44.css
File app\pages\4_44\4_44.css, running tasks...
File app\pages\4_45_D\4_45_D.js was, running tasks...
app\pages\4_45\4_45.css
File app\pages\4_45\4_45.css, running tasks...
app\pages\4_48\4_48.css
File app\pages\4_48\4_48.css, running tasks...
app\pages\4_46\4_46.css
File app\pages\4_46\4_46.css, running tasks...

видимо все это кешируется и в итоге вылетит с ошибкой вроде:

<--- Last few GCs --->
[1644:000001A56BBA23F0]  6744991 ms: Mark-sweep 1371.8 (1425.1) -> 1371.4 (1425.1) MB, 1043.3 / 3.2 ms  (average mu = 0.150, current mu = 0.018) allocation failure scavenge might not succeed
[1644:000001A56BBA23F0]  6746176 ms: Mark-sweep 1372.1 (1425.1) -> 1371.7 (1425.1) MB, 1172.5 / 6.4 ms  (average mu = 0.083, current mu = 0.011) allocation failure scavenge might not succeed

<--- JS stacktrace --->
==== JS stack trace =========================================
    0: ExitFrame [pc: 000001BDFE750361]
Security context: 0x03cfae81d9f1 <JSObject>
    1: /* anonymous */ [000003B954E99759] [D:\project\MyProjects\MyProject\node_modules\readdirp\stream-api.js:~37] [pc=000001BE00E89890](this=0x03b954e99569 <ReaddirpReadable map = 00000200F40F1511>)
    2: emit [000003CFAE845E51] [events.js:~140] [pc=000001BE00C23535](this=0x03b954e99569 <ReaddirpReadable map = 00000200F40F1511>,0x03b1a529c6d...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF61B8AABAA v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+4810
 2: 00007FF61B850C96 uv_loop_fork+80486
 3: 00007FF61B851BC0 uv_loop_fork+84368
 4: 00007FF61BCCDC6E v8::internal::FatalProcessOutOfMemory+798
 5: 00007FF61BCCDBA7 v8::internal::FatalProcessOutOfMemory+599
 6: 00007FF61BFA6E24 v8::internal::Heap::RootIsImmortalImmovable+14788
 7: 00007FF61BF9CA64 v8::internal::Heap::CollectGarbage+7556
 8: 00007FF61BF9B138 v8::internal::Heap::CollectGarbage+1112
 9: 00007FF61BFA4AA7 v8::internal::Heap::RootIsImmortalImmovable+5703
10: 00007FF61BFA4B26 v8::internal::Heap::RootIsImmortalImmovable+5830
11: 00007FF61BB65611 v8::internal::Factory::NewFillerObject+49
12: 00007FF61C2C03DA v8::internal::StoreBuffer::StoreBufferOverflow+26826
13: 000001BDFE750361

где главная строка это утечка памяти.

Вопрос: Чем может быть вызвано подобное поведение? Куда смотреть, чтобы решить проблему запусков ватчеров на все файлы, хотя ничего не меняли и файл не пересохраняли?

версия gulp: 4.0 версия node.js: 8.11 так же ошибка вылеталает на node.js: 11.2

READ ALSO
Оптимизация простого sql запроса

Оптимизация простого sql запроса

Есть следующий sql запрос:

123
Откуда берется название таблицы

Откуда берется название таблицы

Делаю запись в базу данных и не понимаю откуда берется название таблицыПоиском прошелся по проекту и не нашел ничего по запросу users

109
Закачка файлов без перезаписи

Закачка файлов без перезаписи

У меня есть поле ввода:

138
Сделать выделенную область кнопкой

Сделать выделенную область кнопкой

Есть картинка на которой визуально есть несколько кнопокМожно ли сделать эти кнопки кликабельными?

114