티스토리 뷰


GDI Handle 누수 감지하기에서 쓴 것처럼 종종 윈도우 어플리케이션에서 GDI Handle 이 새는 경우가 생기는데, 경우에 따라 수정할 때까지 시간을 벌어야 할 때가 있다.(사용자의 컴플레인이 극심한 경우 일단 땜빵해놔야 하기에.. -_-)

GDI Handle 과 관련된 기본설정을 변경하는 방법은 GDI Handle 의 총 사이즈를 변경하는 방법이 있고 GDI Handle 의 총 갯수를 변경하는 방법이 있다. 여기서 주의할건. 둘 다 프로세스 하나에 대한 GDI Handle 의 개수라는 거다.
(GDI Handle 사이즈는 정확히 측정해서 분석을 못해봤지만, 기본 사이즈를 봤을 때, 프로세스 하나에 대한 값이라는 걸 짐작할 수 있다.)

1. GDI Handle 의 메모리 사이즈를 변경하는 방법은 다음과 같다.
regedit 를 실행하고 다음 위치의 값을 열어서 수정하면 된다.

HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/SubSystems/Windows


Windows 의 값은 기본적으로 다음과 같은데, SharedSection 의 값을 변경하면 된다.

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

"1024, 3072, 512" 로 설정되어 있는데, 이중 가운데 3072 가 GDI Handle 의 기본 사이즈이다. 단위는 Mega Byte 이며 이값을 10240 정도로 기본값보다 조금 더 늘려주면 된다.

2. GDI Handle 의 갯수를 변경하는 방법은 다음과 같다.
regedit 를 실행하고 다음 위치의 값을 열어서 수정하면 된다.

HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows/GDIProcessHandleQuota


GDIProcessHandleQuota 의 기본값은 십진수 기준으로 1,0000 인데 이 값을 늘려주면 된다. 최대값은 65536 이라고 msdn 에 나와있지만 실제 테스트를 해보니 GDI Handle 메모리 사이즈와 영향이 있는 것 같다.

어찌되었건 요 값을 좀 더 늘려주고 나면 GDI Handle 누수로 인해 모니터가 허옇게 변한다고 사용자의 무서운 눈치를 조금은 피할 시간적 여유를 얻을 수 있다. -_-;;

덧. 레지스트리를 수정하는 방법이기 때문에. 굉장히 주의를 기울여서 작업해야 하며, 만약 수정하다가 잘못될 경우 본인은 책임지지 못함을 알려드린다... -_-;;;

덧2. 레지스트리를 수정했으니까 재부팅은 필수다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함