Skip to content

warriors-life/memory-allocator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

memory-allocator

A simple ArrayBuffer memory allocator for JS. It can be found on NPM as memory-allocator or @warriors-life/memory-allocator, or on GitHub Packages as latter.

Not to be confused with the memory-pool package, which removes the overhead of object creation by maintaining a pool of them and modifying their properties (see also PrimitivePool).

License

MIT.

Contributing

Feel free to open an issue or make a pull request! You can find contributing guidelines here and as a start you can work on any issue labelled "good first issue".

Documentation

The package exports MemoryAllocator class as the default and also exports MemoryRef class.

class MemoryAllocator

The main class.

constructor(bufferSize: number = 1024 ** 2)

bufferSize parameters controls minimal size of the new array buffers created by MemoryAllocator when it is impossible to allocate data in old buffers.

.addBuffer(size?: number >= bufferSize): ignore

Manually add a buffer of the specified size.

.allocate(size): MemoryRef

Allocate a slice of memory of the specified size. The resulting memory ref is returned.

class MemoryRef

Reference to a slice of memory. Note that underlying slice may be relocated during a manual defragmentation.

async .free(): void

Mark the reference as freed. It can no longer be used after that and the underlying memory may be redistributed.

.toDataView(): DataView

Returns a DataView of the underlying memory, which can be read and written to.

.toTypedArray(class?: Class<? extends TypedArray> = Uint8Array): class

Returns a typed array mapped to the underlying memory, which can be read and written to.