Я создаю веб-приложение SPA - сервисы API Yii2, которые используются приложением React SPA.React-приложение обслуживается сервером узлов с помощью команды npm start
.
Вопрос в том, стоит ли мне думать об управлении памятью в коде JavaScript и о том, как оно влияет на потребление памяти сервером Noder.
Некоторые первоначальные эксперименты показывают, что мой Node-сервер (на рабочей станции Windows 10) потребляет 200 МБ initilly, после первых 15 запросов страниц потребление увеличивается (как видно в диспетчере задач) до 300 МБ, а затем каждый новый запрос страницы увеличивает объем памяти примерно на 1 МБ., но через некоторое время память восстанавливается, а потребление уменьшается и стабилизируется около 300 МБ.
Это нормальное поведение?
Я предположил, что мне следует думать только о том, что происходит в клиентском браузере, узлеЯ должен забыть обо всем с того момента, когда страница будет передана клиенту.
У меня есть этот вопрос, потому что мой Node-сервер вышел из строя во время разработки, и я боюсь, что это может произойти и в производстве:
<--- Last few GCs --->
[14416:00000248F3E072F0] 25742472 ms: Mark-sweep 1394.1 (1448.4) -> 1394.0 (1448.4) MB, 112.2 / 0.0 ms allocation failure GC in old space requested
[14416:00000248F3E072F0] 25742582 ms: Mark-sweep 1394.0 (1448.4) -> 1391.3 (1413.4) MB, 110.4 / 0.0 ms last resort GC in old space requested
[14416:00000248F3E072F0] 25742692 ms: Mark-sweep 1391.3 (1413.4) -> 1391.3 (1412.4) MB, 110.4 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 00000156F9D25529 <JSObject>
2: replace(this=00000188823C00B9 <Very long string[570801]>,000001E83CD62109 <String[32]: var HTML_WEBPACK_PLUGIN_RESULT =>,000003385EA02431 <String[0]: >)
3: /* anonymous */ [C:\xampp3\htdocs\...\node_modules\html-webpack-plugin\index.js:224] [bytecode=000001E83CD60D69 offset=39](this=000001D78CCEC789 <HtmlWebpackPlugin map = 000000AF60CBA179>,compilation=0000009A874EC2D1 <Tapabl...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::DecodeWrite
2: node_module_register
3: v8::internal::FatalProcessOutOfMemory
4: v8::internal::FatalProcessOutOfMemory
5: v8::internal::Factory::NewRawTwoByteString
6: v8::internal::Smi::SmiPrint
7: v8::internal::StackGuard::HandleInterrupts
8: v8::internal::SlicedString::SlicedStringGet
9: v8::internal::AsmJsScanner::IsNumberStart
10: 0000036A84D043C1