PinnedMemory 는 .NET Core에서 Windows, macOS 및 Linux 운영 체제용 고정 및 잠긴 메모리를 생성, 액세스 및 관리하기 위한 플랫폼 간 고성능 솔루션입니다. 민감한 작업을 위한 자동 메모리 고정 및 선택적 잠금을 제공하여 가비지 수집 재배치를 방지하고 낮은 수준의 메모리 조작 시나리오에서 향상된 성능을 제공합니다.
명령 프롬프트에서:
dotnet 패키지 PinnedMemory 추가
설치 패키지 PinnedMemory
NuGet UI 또는 웹 사이트를 통해 패키지를 검색할 수도 있습니다.
NuGet: 고정된 메모리
Windows, Linux 및 macOS를 위한 교차 플랫폼 메모리 관리.
여러 기본 유형(예: byte
, int
, float
등)을 지원합니다.
보안 및 성능을 위해 메모리 제로화, 잠금 및 잠금 해제 기능을 제공합니다.
배열을 메모리에 고정하여 가비지 수집이 메모리를 재배치하는 것을 방지합니다.
ArrayPool<T>
사용하여 배열을 효율적으로 복제하고 풀링합니다.
공격적인 인라인 처리와 할당 감소로 성능에 최적화되었습니다.
(var pin = new PinnedMemory<byte>(new byte[3])){pin[0] = 65;pin[1] = 61;pin[2] = 77;} 사용
(var pin = new PinnedMemory<byte>(new byte[3])){pin.Write(0, 65);pin.Write(1, 61);pin.Write(2, 77);} 사용
(var pin = new PinnedMemory<byte>(new byte[] {65, 61, 77}, false)){var byte1 = pin[0];var byte2 = pin[1];var byte3 = pin[2] 사용 ;}
(var pin = new PinnedMemory<byte>(new byte[] {65, 61, 77}, false)){var byte1 = pin.Read(0);var byte2 = pin.Read(1);var byte3 = 사용 pin.Read(2);}
(var pin = new PinnedMemory<byte>(new byte[] {65, 61, 77}, false)){var clone = pin.Clone();var clonedArray = clone.ToArray();} 사용
(var pin = new PinnedMemory<byte>(new byte[3], zero: true,locked: true)){// 메모리가 자동으로 0으로 설정되고 잠깁니다.// 보안 작업을 수행합니다.}
PinnedMemory
에서는 다음 기본 유형이 지원됩니다.
sbyte
byte
char
short
ushort
int
uint
long
ulong
float
double
decimal
bool
PinnedMemory(T[] 값, 부울 0 = true, 부울 잠김 = true, SystemType 유형 = SystemType.Unknown)
value : 메모리에 고정할 배열입니다.
0 : 선택 사항입니다. true
인 경우 할당 후 메모리가 0으로 설정됩니다.
잠김 : 선택 사항입니다. true
인 경우 페이징을 방지하기 위해 메모리가 RAM에 잠깁니다.
유형 : 선택 사항입니다. OS 플랫폼( SystemType.Windows
, SystemType.Linux
, SystemType.Osx
)을 지정합니다. Unknown
인 경우 자동으로 감지됩니다.
T this[int i] : 고정된 배열의 요소에 액세스하기 위한 인덱서입니다.
int Length : 고정된 배열의 길이를 반환합니다.
T[] Read() : 고정된 배열 전체를 반환합니다.
T Read(int index) : 지정된 인덱스의 값을 읽습니다.
void Write(int index, T value) : 지정된 인덱스에 값을 씁니다.
PinnedMemory Clone() : 고정된 메모리 배열을 복제하고 새 PinnedMemory<T>
개체를 반환합니다.
T[] ToArray() : 고정된 메모리의 복사본을 배열로 반환합니다.
void Dispose() : 고정된 메모리를 해제하고, 0으로 만들고, 잠겨 있으면 잠금을 해제합니다.
이 라이브러리는 MIT 라이선스에 따라 라이선스가 부여됩니다.