Вступить в клуб →
средняявопросПотоки, память и производительность процесса

Память процесса растёт неделю, пока под не убивают за превышение лимита

const priceCache = new Map();

async function getPrice(productId, region) {
  const key = `${productId}:${region}`;
  if (!priceCache.has(key)) {
    priceCache.set(key, await pricing.fetch(productId, region));
  }
  return priceCache.get(key);
}

Товаров 300 тысяч, регионов 85. Память процесса растёт линейно несколько дней, затем под перезапускается. Что не так?

  • Кэш не ограничен ни размером, ни сроком жизни и хранит всё навсегда
  • Map медленнее обычного объекта и тратит больше памяти
  • Сборщик мусора в Node.js не освобождает объекты внутри Map
  • Ключ-строка должен быть заменён на числовой

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела