성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] systemd for Developers I ; https:/...
[정성태] 엄밀히 object 타입의 인스턴스가 다른 타입으로 형변환 가능...
[정성태] 아래의 글에서 나오는 "Windows Application Pa...
[정성태] The history of calling conventions,...
[정성태] Secure and Deploy .NET Windows Form...
[정성태] Get Started with Milvus Vector DB i...
[정성태] cyberark/PipeViewer - A tool that...
[정성태] WinForms in a 64-Bit world – our st...
[정성태] 예제에서 SELECT_SQL도 내부적으로는 SqlCommand/...
[victor] SELECT_LINQ SELECT_SQL 같은 쿼리인...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Windows - (commit이 아닌) reserved 메모리 사용량 확인 방법</h1> <p> 아래의 글에서,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Commit 메모리가 낮은 상황에서도 메모리 부족(Out-of-memory) 예외 발생 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/11110'>https://www.sysnet.pe.kr/2/0/11110</a> </pre> <br /> 덧글로 질문이 달렸군요. ^^ 사실 다음의 글에서 한번 설명을 했는데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 작업 관리자에서의 "Commit size"가 가리키는 메모리의 의미 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/1850'>https://www.sysnet.pe.kr/2/0/1850</a> </pre> <br /> 별로 주목을 받지 못하는 듯합니다. ^^; 그래서 약간의 첨언 차원에서 글로 남깁니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> <a target='tab' href='https://www.sysnet.pe.kr/2/0/1850'>언급한 대로</a>, 관련 정보를 확인하려면 sysinternal 도구의 힘을 빌려야 합니다. <br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Process Explorer ; <a target='tab' href='https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer'>https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer</a> </pre> <br /> 더군다나 기본적으로는 해당 정보를 보여주지 않기 때문에, 다음 화면과 같이 "Process Memory" 범주의 "Virtual Size"를 선택해야 합니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='check_reserved_memory_2.png' src='/SysWebRes/bbs/check_reserved_memory_2.png' /><br /> <br /> 그럼, 가장 우측에 추가된 "Virtual Size" 칼럼으로 "1,608,640 K" 값을 확인할 수 있는데 그게 바로 "예약까지 포함한 가상 메모리 크기"입니다. 여기서 재미있는 건, 64비트 응용 프로그램의 경우 기본적으로 가상 메모리가 크게 잡혀(예약돼) 있는데, 주소 공간이 남으니 연속 메모리 공간을 편의상 충분히 점유해 두는 듯합니다. (달리 말하면, 64비트 시대인 지금 가상 메모리 예약은 의미 없는 정보가 되었습니다.)<br /> <br /> 이것 외에도 더욱 자세한 정보를 보여주는 VMMap도 쓸 만합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > VMMap ; <a target='tab' href='https://learn.microsoft.com/en-us/sysinternals/downloads/vmmap'>https://learn.microsoft.com/en-us/sysinternals/downloads/vmmap</a> </pre> <br /> "<a target='tab' href='https://www.sysnet.pe.kr/2/0/11110'>Commit 메모리가 낮은 상황에서도 메모리 부족(Out-of-memory) 예외 발생</a>" 글의 예제 코드를 실행시키고, VMMap으로 확인해 보면 다음과 같이 나옵니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='check_reserved_memory_1.png' src='/SysWebRes/bbs/check_reserved_memory_1.png' /><br /> <br /> 보는 바와 같이, "<a target='tab' href='https://www.sysnet.pe.kr/2/0/1850'>Committed</a>" 외에 "Size"가 나오는데 그게 바로 reserved까지 포함한 가상 메모리 크기입니다. 게다가 메모리를 사용한 유형도 알 수 있는데, 예제 코드의 경우 스레드를 생성해 1MB 스택이 점유되는 방식이므로 "Stack" 유형으로 "1,935,360 K"가 잡힌 것을 확인할 수 있습니다. 그리고 하단의 grid 영역에는 생성된 스레드 하나 당 "1,024 K"가 점유되고 "16 K"가 Committed 상태인 것도 볼 수 있습니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1176
(왼쪽의 숫자를 입력해야 합니다.)