.NET Compact Framework의 장치 메모리 관리
업데이트: 2007년 11월
휘발성 RAM과 같은 효율적인 리소스 사용은 .NET Compact Framework에서 제공하는 중요한 이점 중 하나입니다. 장치에는 하드웨어 MMU(메모리 관리 단위) 또는 운영 체제 가상 메모리가 없어도 됩니다.
.NET Compact Framework 저장소 크기
.NET Compact Framework 버전 3.5의 경우 CAB 파일 설치 단원을 참조하십시오. .NET Compact Framework 버전 3.5는 현재 ROM에서 사용할 수 없습니다.
.NET Compact Framework 버전 2.0의 경우 저장소 크기는 다음과 같습니다.
- Windows Mobile 5.0에서 압축되지 않은 경우 5.5MB(ROM)
참고: |
---|
Windows Mobile 5.0부터는 영구 저장소가 더 이상 압축되지 않습니다. |
.NET Compact Framework 버전 1.0의 경우 저장소 크기는 다음과 같습니다.
Pocket PC 2000 및 2002에서 압축된 경우 1.55MB(ROM)
Windows Mobile 2003 for Pocket PC 및 Windows Mobile 2003 for Smartphone에서 압축된 경우 1.35MB(ROM)
실행에 필요한 RAM 요구 사항
- 0.5MB 이상(응용 프로그램에 따라 다름)
일반 응용 프로그램 크기
- 5 - 100KB
CAB 파일 설치
.NET Compact Framework 버전 2.0 서비스 팩 1 및 이후 버전을 설치하는 동안 장치 또는 저장소 카드(있는 경우)에 설치하라는 메시지가 표시됩니다. 저장소에 설치하도록 선택하면 전역 어셈블리 캐시가 저장소 카드에 추가되고 CLR(공용 언어 런타임)용 파일이 \Windows 디렉터리에 추가됩니다. .NET Compact Framework 버전 3.5의 경우 전역 어셈블리 캐시에 약 5.2MB의 공간이 필요하고 CLR에 1.3MB가 필요합니다.
CAB 파일 설치에 대한 .NET Compact Framework의 성능은 하드웨어 및 소프트웨어에 구현된 메모리에 따라 달라집니다. 일부 장치의 경우 저장소 카드에 전역 어셈블리 캐시를 설치하면 성능이 향상될 수 있습니다.
메모리 사용
.NET Compact Framework는 다음과 같은 특징을 갖는 시스템에서 가장 효과적으로 작동할 수 있도록 개발되었습니다.
배터리 사용
.NET Compact Framework 및 관련 응용 프로그램을 DRAM(동적 RAM)에 저장하는 데 필요한 RAM 파일 시스템 용량 또는 플래시 메모리의 약 5 ~ 10배에 해당하는 메모리
최소 128KB에서 최대 1MB의 DRAM 작업 공간
선택적 하드 드라이브
.NET Compact Framework에서는 사용 가능한 시스템 메모리를 신중하게 사용합니다. RAM은 응용 프로그램을 실행해야만 액세스되며 프로그램을 종료하면 .NET Compact Framework에서 RAM을 해제합니다. 네이티브 운영 체제에는 별도의 메모리 보호 기능이 필요하지 않습니다. 소유하지 않은 메모리가 액세스되면 항상 예외가 throw됩니다.
메모리가 부족하면 .NET Compact Framework에서는 현재 실행 중인 코드에 필요하지 않은 내부 데이터 구조를 적극적으로 해제하여 메모리가 부족한 상황에서도 프로그램이 계속 실행될 수 있게 합니다. 응용 프로그램에 필요한 메모리가 사용 가능한 메모리를 초과하면 .NET Compact Framework에서는 해당 응용 프로그램을 완전히 닫고 모든 내부 리소스를 해제합니다. 메모리가 부족하여 .NET Compact Framework 실행이 중단되면 안 됩니다.
응용 프로그램 도메인 호스트는 .NET Compact Framework 응용 프로그램과 공용 언어 런타임을 시작하고, .NET Compact Framework 응용 프로그램은 네이티브 응용 프로그램과 같은 방식으로 코드 공간 및 정적/동적 데이터 공간을 사용합니다. .NET Compact Framework 응용 프로그램이 실행되고 있지 않을 때는 응용 프로그램 도메인 호스트에서만 RAM을 사용하며 공용 언어 런타임에는 소량의 정적 데이터가 사용합니다. Windows CE .NET에서는 .NET Compact Framework 응용 프로그램이 시작되면 응용 프로그램 도메인 호스트를 만듭니다.
.NET Compact Framework 응용 프로그램은 .exe 및 .dll 파일로 패키지되어 플래시의 읽기 전용 또는 읽기/쓰기 파일 시스템이나 ROM(읽기 전용인 경우)에 저장될 수 있습니다. 공용 언어 런타임 클래스 로더는 파일의 메모리 매핑된 뷰를 만들기 위해 메모리 관리 단위를 사용하거나 메모리 사본을 만들지 않고도 이들 파일을 주소 지정 가능한 블록에서 직접 읽을 수 있습니다.
장치별 성능 차이를 이해하기 위해 여러 장치에서 응용 프로그램을 테스트하는 것이 좋습니다.
RAM 저장소
RAM(Random Access Memory)은 동적 데이터 구조 및 JIT 컴파일된 코드를 저장하는 데 사용됩니다. .NET Compact Framework에서는 장치에 지정된 크기 제한에 따라 RAM을 사용하여 데이터 구조 및 생성된 코드를 캐시하고 필요한 경우 메모리를 해제합니다.
공용 언어 런타임은 메모리가 부족하면 코드 피칭 기술을 사용하여 JIT 컴파일된 코드 블록을 런타임에 해제합니다. 이렇게 하면 RAM이 제한된 시스템에서 대용량 프로그램을 실행할 때 성능 저하 문제를 최소화할 수 있습니다.
ROM 저장소
공용 언어 런타임을 구성하는 네이티브 코드는 ROM(Read-Only Memory) 또는 RAM 파일 시스템에 위치할 수 있습니다. .NET Compact Framework에서는 메모리가 부족한 경우 낮은 성능으로 응용 프로그램을 계속 실행할 수 있도록 사용 가능한 ROM, 플래시 또는 디스크 저장소를 사용합니다.
클래스 라이브러리용 메타데이터 및 MSIL(Microsoft Intermediate Language) 명령을 포함하는 파일은 ROM 또는 RAM 파일 시스템에 저장됩니다. 클래스 라이브러리는 다운로드 가능한 응용 프로그램 설치 프로세스의 일부로 읽기/쓰기 파일 시스템에 다운로드될 수 있습니다.