1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Napa.js

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
memory.md 4.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 05:42 7a34d50

Пространство имён memory

Содержание

  • API
    • Тип Handle
    • Интерфейс Shareable
    • Интерфейс Allocator
      • allocator.allocate(size: number): Handle
      • allocator.deallocate(handle: Handle, sizeHint: number): void
      • allocator.type: string
    • Интерфейс AllocatorDebugger
      • allocatorDebugger.getDebugInfo(): string
    • Функция debugAllocator(allocator: Allocator): AllocatorDebugger
    • Объект crtAllocator
    • Объект defaultAllocator
    • Выделение памяти в аддоне C++

API

Тип Handle Handle определяется в TypeScript следующим образом:

type Handle = [number, number]

Это стандартный способ представления 64-битного указателя в Napa.

Интерфейс Shareable Интерфейс для нативного объекта, который может быть использован совместно несколькими потоками JavaScript.

Интерфейс Allocator Интерфейс для распределителя памяти, который выделяет память для нативных объектов.

allocator.allocate(size: number): Handle Выделяет память запрошенного размера.

var handle = allocator.allocate(10);

allocator.deallocate(handle: Handle, sizeHint: number): void Освобождает память из входного дескриптора с подсказкой размера, которая полезна для некоторых реализаций распределителей C++ для освобождения памяти.

allocator.deallocate(handle, 10);

allocator.type: string Получает строковый идентификатор типа для распределителя, который будет полезен при отладке.

Интерфейс AllocatorDebugger AllocatorDebugger расширяет интерфейс Allocator, с функцией-членом getDebugInfo для предоставления информации об отладке. В основном отладчик распределителя будет использовать переданный распределитель для выделения памяти, одновременно перехватывая его для отслеживания количества и размера выделения.

allocatorDebugger.getDebugInfo(): string Получает информацию об отладке для распределения. Реализации интерфейса AllocatorDebugger могут иметь разные схемы информации об отладке.

Функция debugAllocator(allocator: Allocator): AllocatorDebugger Возвращает простой отладчик распределителя, который возвращает информацию об отладке, например:

{
    "allocate": 10,
    "allocateSize": 1024,
    "deallocate": 8,
    "deallocateSize": 912
}

Объект crtAllocator Возвращает распределитель C-runtime из общей библиотеки Napa.js. Соответствующая часть C++ — napa::memory::GetCrtAllocator().

Объект defaultAllocator Возвращает стандартный распределитель из общей библиотеки Napa.js. Его соответствующая часть C++ — napa::memory::GetDefaultAllocator(). Пользователи могут установить обратные вызовы по умолчанию для выделения/освобождения памяти в API napa_allocator_set.

Выделение памяти в C++-аддоне Выделение памяти в C++-аддоне является сложным. Распространённой ошибкой является выделение памяти в одной dll, но освобождение в другой. Это может вызвать проблемы, если C-runtime в этих двух dll скомпилированы одинаково. Также существуют сложные сценарии, в которых пользователь хочет настроить выделение памяти. Napa.js предоставляет API для настройки распределителя памяти.

Рекомендуемый способ выделения памяти TBD

Настройка выделения памяти TBD

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Napa.js.git
git@api.gitlife.ru:oschina-mirror/mirrors-Napa.js.git
oschina-mirror
mirrors-Napa.js
mirrors-Napa.js
master