내 응용 프로그램은 .NET 4.0 및 WinForm을 실행 중입니다.내 응용 프로그램에서 가상 메모리 (커밋) 크기를 줄일 수 있습니까?
Mdi 응용 프로그램 및 타사 컨트롤이 사용되었습니다.
실행 중일 때 점점 가상 메모리 (커밋) 크기가 커집니다. 나는 줄이고 그것은 잘 작동과 같은 라인
GC.Collect(GC.MaxGeneration);
GC.WaitForPendingFinalizers();
SetProcessWorkingSetSize(p.Handle, -1, -1);
[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
public static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize, int maximumWorkingSetSize);
과은 WorkingSet 크기를 해제 할 수있다. 글쎄, 몇 가지 화면이 비즈니스 로직을 위해 열려 있어야하므로 메모리 크기가 계속 증가하고 있고, 결국 앱이 죽어 가고 있습니다.
그러나 가상 메모리 크기를 줄이거 나 출시 할 수 없었습니다.
나는의 app.config 그것은 작동하지 않습니다
<runtime>
<DisableDoubleMapping enabled="true" />
<gcTrimCommitOnLowMemory enabled="true"/>
</runtime>
에서 구성을 시도했다. 그것에 영향을줍니다.
VMMap 3.1에서 보려고했습니다. 이미지는 주로 .net ngen 이미지입니다. 어셈블리의 일부와 추가 참조 dll이 그렇게 크지는 않습니다. 물론 dll (winform을위한 세 번째 pary 컨트롤)은 약 5 ~ 6MB입니다.
내 응용 프로그램에서 가상 메모리 (커밋) 크기를 줄일 수있는 방법은 무엇입니까?
가능한 한 빨리 알려주십시오. 이와 비슷한
SetProcessWorkingSetSize(p.Handle, -1, -1);
감사합니다.
마술 지팡이가 없으므로 더 똑똑한 코드를 작성해야합니다. 작업 세트 크기를 줄이는 것은 의미가 없습니다. –