Spec-Zone.ru › Web APIs

Производительность: метод measureUserAgentSpecificMemory()

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает во всех распространённых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Web Workers.

Экспериментальная функция: Это экспериментальная технология
Перед использованием в продакшене внимательно изучите таблицу совместимости с браузерами.

Метод measureUserAgentSpecificMemory() используется для оценки использования памяти веб-приложением, включая все его iframe и рабочие потоки.

Синтаксис

measureUserAgentSpecificMemory()

Параметры

Нет.

Возвращаемое значение

A Promise, который разрешается объектом, содержащим следующие свойства:

bytes

Число, представляющее общее использование памяти.

breakdown

Массив Array объектов, разбивающих общее bytes и предоставляющих информацию об источнике и типе. Объект содержит следующие свойства:

bytes

Размер памяти, описываемой этим элементом.

attribution

Массив Array контейнеров областей JavaScript, использующих память. Этот объект имеет следующие свойства:

url

Если эта ссылка соответствует области JavaScript одного источника, то это свойство содержит URL области. В противном случае это строка "cross-origin-url".

container

Объект, описывающий элемент DOM, содержащий эту область JavaScript. Этот объект имеет следующие свойства:

id

Атрибут id контейнерного элемента.

src

Атрибут src контейнерного элемента. Если контейнерный элемент — элемент <object>, то это поле содержит значение атрибута data.

scope

Строка, описывающая тип области JavaScript одного источника. Либо "Window", "DedicatedWorkerGlobalScope", "SharedWorkerGlobalScope", "ServiceWorkerGlobalScope" или "cross-origin-aggregated" в случае перекрёстного источника.

types

Массив типов памяти, определённых реализацией, связанных с памятью.

Пример возвращаемого значения:

{
  bytes: 1500000,
  breakdown: [
    {
      bytes: 1000000,
      attribution: [
        {
          url: "https://example.com",
          scope: "Window",
        },
      ],
      types: ["DOM", "JS"],
    },
    {
      bytes: 0,
      attribution: [],
      types: [],
    },
    {
      bytes: 500000,
      attribution: [
        {
          url: "https://example.com/iframe.html"
          container: {
            id: "example-id",
            src: "redirect.html?target=iframe.html",
          },
          scope: "Window",
        }
      ],
      types: ["JS", "DOM"],
    },
  ],
}

Исключения

SecurityError DOMException

Выбрасывается, если не выполнены требования безопасности для предотвращения утечек информации из других источников.

Описание

Браузер автоматически выделяет память при создании объектов и освобождает её, когда они больше не доступны (мусорное собирание). Это мусорное собирание (GC) является приблизительным, так как общая проблема определения того, нужна ли конкретная часть памяти, является неразрешимой (см. также Управление памятью JavaScript). Разработчики должны убедиться, что объекты подлежат мусорному собиранию, память не утечка, и объём памяти не растёт необоснованно со временем, что может привести к медленным и нереагирующим веб-приложениям. Утечки памяти обычно возникают из-за забытия отмены регистрации обработчика событий, не закрытия рабочих потоков, накопления объектов в массивах и т. п.

API measureUserAgentSpecificMemory() агрегирует данные об использовании памяти, чтобы помочь вам обнаружить утечки памяти. Его можно использовать для выявления регрессии памяти или для A/B-тестирования функций для оценки их влияния на использование памяти. Вместо выполнения отдельных вызовов этого метода лучше выполнять периодические вызовы для отслеживания изменений использования памяти в течение сеанса.

Значения byte возвращаемого данным API не сравнимы между браузерами или версиями браузера, так как они зависят от реализации. Также способ, которым предоставляются массивы breakdown и attribution, зависит от браузера. Лучше не делать никаких предположений о структуре этих данных. Данное API предназначено для периодических вызовов (с случайным интервалом) для агрегирования данных и анализа разницы между выборками.

Требования безопасности

Для использования этого метода ваш документ должен находиться в безопасном контексте и быть изолированным от других источников.

Вы можете использовать свойства Window.crossOriginIsolated и WorkerGlobalScope.crossOriginIsolated для проверки изоляции документа от других источников:

if (crossOriginIsolated) {
  // Use measureUserAgentSpecificMemory
}

Примеры

Отслеживание использования памяти

Следующий код демонстрирует, как вызвать метод measureUserAgentSpecificMemory() один раз каждые пять минут с случайным интервалом, используя экспоненциальное распределение.

function runMemoryMeasurements() {
  const interval = -Math.log(Math.random()) * 5 * 60 * 1000;
  console.log(`Next measurement in ${Math.round(interval / 1000)} seconds.`);
  setTimeout(measureMemory, interval);
}

async function measureMemory() {
  const memorySample = await performance.measureUserAgentSpecificMemory();
  console.log(memorySample);
  runMemoryMeasurements();
}

if (crossOriginIsolated) {
  runMemoryMeasurements();
}

Спецификации

Спецификация
API измерения памяти
# ref-for-dom-performance-measureuseragentspecificmemory⑤

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
measureUserAgentSpecificMemory 89 89 Нет 75 Нет 89 Нет 63 Нет 15.0 89

См. также

  • setTimeout()
  • Отслеживание общего использования памяти веб-страницы с помощью measureUserAgentSpecificMemory() — web.dev

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Performance/measureUserAgentSpecificMemory

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API