PinnedMemory adalah solusi lintas platform berkinerja tinggi untuk membuat, mengakses, dan mengelola memori yang disematkan dan dikunci untuk sistem operasi Windows, macOS, dan Linux di .NET Core. Ini memberikan penyematan memori otomatis dan penguncian opsional untuk operasi sensitif, membantu Anda mencegah relokasi pengumpulan sampah dan menawarkan peningkatan kinerja dalam skenario manipulasi memori tingkat rendah.
Dari prompt perintah:
dotnet menambahkan paket PinnedMemory
Instal-Paket PinnedMemory
Anda juga dapat mencari paket melalui NuGet UI atau situs web Anda:
NuGet: Memori yang Disematkan
Manajemen memori lintas platform untuk Windows, Linux, dan macOS.
Mendukung beberapa tipe primitif (misalnya byte
, int
, float
, dll.).
Menawarkan penekanan, penguncian, dan pembukaan kunci memori untuk keamanan dan kinerja.
Mencegah pengumpulan sampah memindahkan memori dengan menyematkan array di memori.
Kloning dan pengumpulan array yang efisien menggunakan ArrayPool<T>
.
Dioptimalkan untuk kinerja dengan inlining agresif dan pengurangan alokasi.
menggunakan (var pin = new PinnedMemory<byte>(byte baru[3])){pin[0] = 65;pin[1] = 61;pin[2] = 77;}
menggunakan (var pin = new PinnedMemory<byte>(byte baru[3])){pin.Write(0, 65);pin.Write(1, 61);pin.Write(2, 77);}
menggunakan (var pin = new PinnedMemory<byte>(byte baru[] {65, 61, 77}, false)){var byte1 = pin[0];var byte2 = pin[1];var byte3 = pin[2] ;}
menggunakan (var pin = new PinnedMemory<byte>(byte baru[] {65, 61, 77}, false)){var byte1 = pin.Read(0);var byte2 = pin.Read(1);var byte3 = pin.Baca(2);}
menggunakan (var pin = new PinnedMemory<byte>(byte baru[] {65, 61, 77}, false)){var clone = pin.Clone();var clonedArray = clone.ToArray();}
menggunakan (var pin = new PinnedMemory<byte>(new byte[3], zero: true,locked: true)){// Memori secara otomatis di-zero-kan dan dikunci.// Lakukan operasi yang aman.}
Tipe primitif berikut didukung di PinnedMemory
:
sbyte
byte
char
short
ushort
int
uint
long
ulong
float
double
decimal
bool
PinnedMemory(nilai T[], bool zero = true, boollocked = true, tipe SystemType = SystemType.Unknown)
value : Array yang akan disematkan dalam memori.
nol : Opsional. Jika true
, memori akan dikosongkan setelah alokasi.
terkunci : Opsional. Jika true
, memori akan dikunci dalam RAM untuk mencegah paging.
jenis : Opsional. Menentukan platform OS ( SystemType.Windows
, SystemType.Linux
, SystemType.Osx
). Jika Unknown
, maka terdeteksi secara otomatis.
T this[int i] : Pengindeks untuk mengakses elemen dalam array yang disematkan.
int Panjang : Mengembalikan panjang array yang disematkan.
T[] Read() : Mengembalikan seluruh array yang disematkan.
T Read(int indeks) : Membaca nilai pada indeks yang ditentukan.
void Write(int indeks, nilai T) : Menulis nilai pada indeks yang ditentukan.
PinnedMemory Clone() : Mengkloning array memori yang disematkan dan mengembalikan objek PinnedMemory<T>
baru.
T[] ToArray() : Mengembalikan salinan memori yang disematkan sebagai array.
void Dispose() : Membebaskan memori yang disematkan, menghilangkannya, dan membukanya jika terkunci.
Perpustakaan ini dilisensikan di bawah Lisensi MIT.