База знаний / видео

Ограничения на размер типов данных в Node.js и браузерах

Разрабатывая проект на JavaScript/TypeScript, мы привыкли создавать объекты, массивы, строки и вообще писать код, как будто память бесконечна. Но во время выполнения JavaScript существуют ограничения на размер разных структур и типов данных. В разных движках и даже версиях одного движка ограничения могут быть разными. Я исследовал исходный код движков V8 и SpiderMonkey, написал немного кода и собрал актуальные данные, которыми и поделюсь. Будет полезно тем, кто обрабатывает видео/аудио/картинки на JS, тем, кто использует SSR и пересылает большие объёмы данных на клиент, а также всем, кто пока не задумывался об этой проблеме.