[c#] 32 비트 애플리캐이션 메모리 늘리기
64 비트 윈도우즈에서 32 비트 애플리캐이션을 써야 할 때가 있다. 32 비트 라이브러리를 써야 하는 경우가 대표적인 예다. 이때 이론적으로는 2gb까지 메모리를 쓸 수 있지만 사실적으로는 1gb를 조금 넘은 때 애플리캐이션이 멈춘다.
64 비트 윈도우즈에서 32 비트 애플리캐이션은 이론적으로 메모리를 4gb까지 쓸 수 있다. 사실적으로는 3gb를 조금 넘게 이용할 수 있다. 컴파일을 할 때 largeaddressaware 옵션을 링크하면 된다. 쉽게는 post build event에 설정하는 방법을 생각해 볼 수 있는데 비주얼 스투디오에서 이 기능을 이용하는 건 까다롭고 제대로 작동하지 않는 경우들도 흔하다. 특히 퍼블리쉬 빌드를 할 땐 몸에 사리가 생길 수도 있다.
누겟 패키지를 이용하는 게 쉽다. 아무 설정할 필요도 없이 설치만 하면 된다. largeaddressaware라는 키워드로 누겟 검색을 해 보면 LargeAddressAware라는 게 가장 많이 다운로드되었다며 제일 위에 나온다. 이거 제대로 작동하지 않는다. dotnetCampus.LargeAddressAware가 잘 된다.
largeaddressaware 플래그가 제대로 적용되면 아래의 방법으로 확인할 수 있다.
tools > command line > developer powershell > dumpbin /headers "path"
위와 같이 dumpbin을 실행한 결과의 윗 부분에 characteristics 항목을 보면 Application can handle large (>2GB) addresses라고 확인이 될 거다.