Spec-Zone.ru › Node.js 10 LTS

V8

Модуль v8 предоставляет API, специфичные для версии V8, встроенной в бинарник Node.js. К нему можно получить доступ с помощью:

const v8 = require('v8');

API и реализация могут быть изменены в любое время.

v8.cachedDataVersionTag()

Добавлен в: v8.0.0
  • Возвращает: <целое>

Возвращает целое число, представляющее "тег версии", полученный из версии V8, флагов командной строки и обнаруженных функций процессора. Это полезно для определения совместимости буфера vm.Script cachedData с этим экземпляром V8.

v8.getHeapSpaceStatistics()[src]

История
Версия Изменения
v7.5.0

Поддержка значений, превышающих диапазон 32-битного беззнакового целого числа.

v6.0.0

Добавлен в: v6.0.0

  • Возвращает: <Массив объектов>

Возвращает статистику о пространствах кучи V8, то есть сегментах, составляющих кучу V8. Ни порядок пространств кучи, ни доступность пространства кучи не гарантируются, так как статистика предоставляется через функцию V8 GetHeapSpaceStatistics и может меняться от одной версии V8 к другой.

Возвращаемое значение — массив объектов, содержащих следующие свойства:

  • space_name <строка>
  • space_size <число>
  • space_used_size <число>
  • space_available_size <число>
  • physical_space_size <число>
[
  {
    "space_name": "new_space",
    "space_size": 2063872,
    "space_used_size": 951112,
    "space_available_size": 80824,
    "physical_space_size": 2063872
  },
  {
    "space_name": "old_space",
    "space_size": 3090560,
    "space_used_size": 2493792,
    "space_available_size": 0,
    "physical_space_size": 3090560
  },
  {
    "space_name": "code_space",
    "space_size": 1260160,
    "space_used_size": 644256,
    "space_available_size": 960,
    "physical_space_size": 1260160
  },
  {
    "space_name": "map_space",
    "space_size": 1094160,
    "space_used_size": 201608,
    "space_available_size": 0,
    "physical_space_size": 1094160
  },
  {
    "space_name": "large_object_space",
    "space_size": 0,
    "space_used_size": 0,
    "space_available_size": 1490980608,
    "physical_space_size": 0
  }
]

v8.getHeapStatistics()[src]

История
Версия Изменения
v7.5.0

Поддержка значений, превышающих диапазон 32-битного беззнакового целого числа.

v7.2.0

Добавлены malloced_memory, peak_malloced_memory, и does_zap_garbage.

v1.0.0

Добавлен в: v1.0.0

  • Возвращает: <Объект>

Возвращает объект со следующими свойствами:

  • total_heap_size <число>
  • total_heap_size_executable <число>
  • total_physical_size <число>
  • total_available_size <число>
  • used_heap_size <число>
  • heap_size_limit <число>
  • malloced_memory <число>
  • peak_malloced_memory <число>
  • does_zap_garbage <число>

does_zap_garbage — булево значение 0/1, которое указывает, включён ли параметр --zap_code_space. Это заставляет V8 перезаписывать мусор кучи образцом битов. Следы RSS (занятой памяти) увеличиваются, потому что он постоянно обращается ко всем страницам кучи, что уменьшает вероятность их вытеснения операционной системой.

{
  total_heap_size: 7326976,
  total_heap_size_executable: 4194304,
  total_physical_size: 7326976,
  total_available_size: 1152656,
  used_heap_size: 3476208,
  heap_size_limit: 1535115264,
  malloced_memory: 16384,
  peak_malloced_memory: 1127496,
  does_zap_garbage: 0
}

v8.setFlagsFromString(flags)[src]

Добавлен в: v1.0.0
  • flags <строка>

Метод v8.setFlagsFromString() может использоваться для программирования флагов командной строки V8. Этот метод следует использовать с осторожностью. Изменение настроек после запуска виртуальной машины может привести к непредсказуемому поведению, включая сбои и потерю данных; или же это может вообще не иметь никакого эффекта.

Доступные для версии Node.js параметры V8 можно определить, запустив node --v8-options. Неофициально поддерживаемый сообществом список параметров и их эффектов доступен здесь.

Использование:

// Print GC events to stdout for one minute.
const v8 = require('v8');
v8.setFlagsFromString('--trace_gc');
setTimeout(() => { v8.setFlagsFromString('--notrace_gc'); }, 60e3);

API сериализации

Устойчивость: 1 - Экспериментальная

API сериализации предоставляет средства для сериализации значений JavaScript таким образом, чтобы они были совместимы с алгоритмом структурированного клонирования HTML. Формат обратной совместимости (т. е. безопасен для хранения на диске).

Это API находится в стадии разработки, и до тех пор, пока это предупреждение не будет удалено, могут быть внесены изменения (включая несовместимые изменения API или формата данных).

v8.serialize(value)[src]

Добавлен в: v8.0.0
  • value <любой>
  • Возвращает: <Буфер>

Использует DefaultSerializer для сериализации value в буфер.

v8.deserialize(buffer)[src]

Добавлен в: v8.0.0
  • buffer <Буфер> | <Тип массива> | <DataView> Буфер, возвращённый serialize().

Использует DefaultDeserializer с параметрами по умолчанию для чтения значения JS из буфера.

класс: v8.Serializer

Добавлен в: v8.0.0

new Serializer()

Создаёт новый объект Serializer.

serializer.writeHeader()

Записывает заголовок, который включает версию формата сериализации.

serializer.writeValue(value)

  • value <любой>

Сериализует значение JavaScript и добавляет сериализованное представление во внутренний буфер.

Выбрасывает ошибку, если value не может быть сериализован.

serializer.releaseBuffer()

  • Возвращает: <Буфер>

Возвращает сохранённый внутренний буфер. Этот сериализатор не должен использоваться после того, как буфер был освобождён. Вызов этого метода приводит к неопределённому поведению, если предыдущий запис не удался.

serializer.transferArrayBuffer(id, arrayBuffer)

  • id <32-битное беззнаковое целое число>
  • arrayBuffer <ArrayBuffer> Экземпляр ArrayBuffer.

Помечает ArrayBuffer как содержащий данные, передаваемые вне очереди. Передайте соответствующее ArrayBuffer в контекст десериализации в deserializer.transferArrayBuffer().

serializer.writeUint32(value)

  • value <целое число>

Записать 32-битное беззнаковое целое число. Для использования внутри настраиваемого serializer._writeHostObject().

serializer.writeUint64(hi, lo)

  • hi <целое число>
  • lo <целое число>

Записать 64-битное беззнаковое целое число, разделённое на части по 32 бита (высокая и низкая). Для использования внутри настраиваемого serializer._writeHostObject().

serializer.writeDouble(value)

  • value <число>

Запишите значение JS number. Для использования внутри пользовательского serializer._writeHostObject().

serializer.writeRawBytes(buffer)

  • buffer <Буфер> | <Массив типизированных данных> | <DataView>

Запишите сырые байты во внутренний буфер сериализатора. Десериализатор потребует способ вычисления длины буфера. Для использования внутри пользовательского serializer._writeHostObject().

serializer._writeHostObject(object)

  • object <Объект>

Этот метод вызывается для записи некоторого типа объекта хоста, т.е. объекта, созданного нативными C++ связующими. Если сериализация object невозможна, должно быть выброшено соответствующее исключение.

Этот метод отсутствует в классе Serializer сам по себе, но может быть предоставлен подклассами.

serializer._getDataCloneError(message)

  • message <строка>

Этот метод используется для генерации объектов ошибок, которые будут брошены, когда объект не может быть скопирован.

Этот метод по умолчанию использует конструктор Error и может быть переопределен в подклассах.

serializer._getSharedArrayBufferId(sharedArrayBuffer)

  • sharedArrayBuffer <SharedArrayBuffer>

Этот метод вызывается, когда сериализатор собирается сериализовать объект SharedArrayBuffer. Он должен вернуть целочисленный ID объекта без знака размером 32 бита, используя тот же ID, если этот SharedArrayBuffer уже был сериализован. При десериализации этот ID будет передан в deserializer.transferArrayBuffer().

Если объект не может быть сериализован, должно быть выброшено исключение.

Этот метод отсутствует в классе Serializer сам по себе, но может быть предоставлен подклассами.

serializer._setTreatArrayBufferViewsAsHostObjects(flag)

  • flag <логическое значение> По умолчанию: false

Указывает, следует ли рассматривать объекты TypedArray и DataView как объекты хоста, т.е. передавать их в serializer._writeHostObject().

класс: v8.Deserializer

Добавлен в: v8.0.0

new Deserializer(buffer)

  • buffer <Буфер> | <Массив типизированных данных> | <DataView> Буфер, возвращенный serializer.releaseBuffer().

Создает новый объект Deserializer.

deserializer.readHeader()

Считывает и проверяет заголовок (включая версию формата). Может, например, отклонить недопустимый или неподдерживаемый формат. В этом случае выбрасывается Error.

deserializer.readValue()

Десериализует значение JavaScript из буфера и возвращает его.

deserializer.transferArrayBuffer(id, arrayBuffer)

  • id <целое> 32-битное целое число без знака.
  • arrayBuffer <ArrayBuffer> | <SharedArrayBuffer> Экземпляр ArrayBuffer.

Помечает ArrayBuffer как имеющий содержимое, переданное вне диапазона. Передайте соответствующий ArrayBuffer в контексте сериализации в serializer.transferArrayBuffer() (или верните id из serializer._getSharedArrayBufferId() в случае SharedArrayBuffer).

deserializer.getWireFormatVersion()

  • Возвращает: <целое>

Считывает версию базового формата. Вероятно, будет полезен в основном для устаревшего кода, считывающего старые версии формата. Не может быть вызван до .readHeader().

deserializer.readUint32()

  • Возвращает: <целое>

Считывает и возвращает 32-битное целое число без знака. Для использования внутри пользовательского deserializer._readHostObject().

deserializer.readUint64()

  • Возвращает: <массив целых>

Считывает и возвращает 64-битное целое число без знака в виде массива [hi, lo] с двумя записями 32-битных целых чисел без знака. Для использования внутри пользовательского deserializer._readHostObject().

deserializer.readDouble()

  • Возвращает: <число>

Считывает значение JS number. Для использования внутри пользовательского deserializer._readHostObject().

deserializer.readRawBytes(length)[src]

  • length <целое>
  • Возвращает: <Буфер>

Считывает сырые байты из внутреннего буфера десериализатора. Параметр length должен соответствовать длине буфера, который был передан в serializer.writeRawBytes(). Для использования внутри пользовательского deserializer._readHostObject().

deserializer._readHostObject()

Этот метод вызывается для чтения некоторого типа объекта хоста, т.е. объекта, созданного нативными C++ связующими. Если десериализация данных невозможна, должно быть выброшено соответствующее исключение.

Этот метод отсутствует в классе Deserializer сам по себе, но может быть предоставлен подклассами.

класс: v8.DefaultSerializer

Добавлен в: v8.0.0

Подкласс Serializer, который сериализует TypedArray (в частности, Buffer) и DataView объекты как объекты хоста и сохраняет только ту часть их базовых ArrayBuffers, на которую они ссылаются.

класс: v8.DefaultDeserializer

Добавлен в: v8.0.0

Подкласс Deserializer, соответствующий формату, записанному DefaultSerializer.

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v10.x/docs/api/v8.html

Spec-Zone.ru

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