C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[16410] Re:코드기어 툴 및 제작된 프로그램 오류..
박지훈.임프 [cbuilder] 6509 읽음    2009-07-24 01:52
"사용 가능한 저장소가 부족하여 이 명령을 처리할 수 없습니다" 메시지는 리소스가 부족해서 나는 에러입니다.
뭐 굳이 이렇게 설명드리지 않아도, 해당 예외의 클래스 이름이 나오죠? EOutOfResources라고요.

저는 꽤 자주 보는 메시지입니다. 제가 자료를 찾아볼 때는 IE를 마구 띄워놓고 작업하는데, 그러다보면 보통 30~50개 사이 정도에서 IE가 뻑갑니다. 이럴 때 말씀하신 에러 메시지가 뜰 때도 있고, 아예 그 다이얼로그조차 보여주지 못하고 뻗어버릴 때도 있습니다. IE 자체가 메모리 리크가 심각해서, 창을 닫아도 메모리 소요량이 거의 안줄어듭니다.

일반적인 직접 원인은, 너무 많은 메모리나 GDI 핸들 등을 할당했을 때입니다. 보통 이렇게 어마어마한 메모리를 할당했다기보다는, 메모리 리크로 인해 발생합니다. 계속 할당한 메모리가 제대로 해제가 안되어서 메모리 소요량이 계속 올라가기만 하다가 어느 순간에 뻗는 거죠.

문제는, 이 에러가 발생한 애플리케이션을 강제 종료시키고 나면, 원칙적으로는 그 애플리케이션에서 할당했던 메모리 등 리소스가 운영체제로 돌아와야 하는데, MS님께서 만드신 윈도우에서는 제대로 돌아오지 않는 경우가 종종 있습니다.

제가 이 에러를 만났던 케이스들 중에 가장 짜증 만빵이었던 경우는, 하드웨어 오류로 인해 메모리 반환이 안되어 계속 리소스를 먹기만 하는 경우였습니다. 사실은... 이 볼랜드포럼이 돌아가고 있는 서버가 그런 상태입니다. 이 조립 서버를 셋업할 때 뭔가 부품이 안맞았든지 아니면 불량이었던지, 윈도우 자체는 잘 설치되었는데 그 뒤로 애플리케이션들을 실행할 때마다 할당된 메모리가 몽땅 반환이 안되더군요. 그때 급하게 서버를 올려야 하는 상황이어서, 어떻게든 돌아가기만 하는 상태 정도로만 만들어서 IDC에다 갖다 꽂아놔버렸었습니다. --;;;

결국 이 서버는 지금 황당한 상태로 돌아가고 있는데... 게시판 모듈이 서버 모듈이다보니 클라이언트 요청이 들어올 때마다 필요한 메모리를 할당하고 어떤 조건이 되면 메모리가 반환되어야 하기 때문에, 특별한 상황이 아니라면 메모리가 일정 수준 이상으로 올라가지는 않아야 하는데요. 이전 서버에서는 한두달 놔둬도 30~40메가 정도 이상 올라가지 않았습니다.

그런데 현재의 이 뻑난 서버는, 똑같은 코드의 똑같은 바이너리를 올려놔도 메모리가 전혀 해제되지 않고 무한히 증가하기만 하는 상태입니다. 한 일주일쯤 놔두면 1~2기가 정도의 메모리를 먹고 뒤뚱거리고 있는데, 작업관리자에서 잘 보면 실제 메모리 사용량은 20~30메가 사이에 유지되면서 VM 크기만 몇기가를 먹고 있습니다. 전혀 비정상인 상태죠. 덕분에 1주일에 몇번 정도 웹모듈을 강제 중지시킵니다. --;; 그래도 완전히 반환이 안되어서 2~3주마다 한번씩은 리부팅을 해줍니다. --;;;;;;

간단히 말해서, 소프트웨어들에는 아무런 문제가 없으면서도 하드웨어의 자잘한 오류 때문에 대량의 리소스 리크가 발생하는 경우도 있다는 것입니다. 이런 경우가 없을 거 같겠지만, 실제로 제가(아니 사실은.. 여러분도 같이..) 겪고 있는 상태입니다.

이런 상태를 일단 모니터링이라도 해야 원인이 어디 있는지 확인하실 수 있으실테니, 그런 에러가 나기 전부터 에러가 나는 시점까지 작업관리자를 띄워서 리소스 소요량을 확인해보세요. 작업관리자의 기본 상태에서는 PID와 CPU 사용시간, 메모리 소요량 정도만 나오기 때문에, 추가 컬럼을 띄워서 리소스를 전반적으로 확인해보세요. 첨부한 제 작업관리자 그림처럼요. (사실 더 좋은 것은 Process Explorer입니다만... 도무지 이 유틸리티는 정이 안가서...)



smleelms 님이 쓰신 글 :
: 현재 트윅된 xp sp3 버젼에 ATI Radeon HD 4850 512M 그래픽카드를 사용하고 있습니다.
: 해상도는 2048 * 1152에 듀얼모니터 사용중입니다.
:
: 그런데, 작업을 한참하다보면 C++ 빌더에서 컴파일된 프로그램이 초기 실행시에 "사용 가능한 저장소가 부족하여 이 명령을 처리할 수 없습니다"라고 오류를 내며 실행이 되지가 않습니다. 이때 브레이크시켜 call stack을 보면 GDI 오류에 걸려있습니다.
:
: 한번 이렇게 되면, 제가 C++ 빌더로 작업한 프로그램들은 거의 다 위의 오류로 실행이 되지를 않습니다.(아주 작은 프로그램들 빼구요.) 처음에 한 두번은 그려려니 했는데, 지금보니 위 오류가 발생한 다음에는 C++ 빌더 6.0 , 2007, 델파이 2007도 위 오류를 내면서 툴 자체가 실행이 되지를 않습니다.
:
: 그런데, VC++이나, 오피스나 다른 덩치큰 프로그램들은 잘 실행이 됩니다. 단 아래아한글의 경우 프로그램 화면이 깨지고, 화면이 갱신이 안되고 그럽니다. (응용프로그램 오류캡쳐화면 참고)
:
: 제가 짠 프로그램들만 그렇다면 뭔가 옵션 등을 잘못 설정했다라고 생각을 할텐데 (그렇다면 어떤 옵션이 저런 오류를 일으킬까요???), 툴들이 실행이 안되니 뭔가 연관성이 있을런지해서 제목을 저렇게 붙였습니다만..
:
: 왜 이런 현상이 생기는지, 어떻게 하면 이 현상을 해결할 수 있을런지 도움을 요청합니다.
:
: P. S 1. 지금 일이 많이 바빠서, 재설치는 당분간 어려운관계로 새로 밀라고는 말아 주십시오. ^^;;
:        2. 이리저리 찾아보니, 고해상도라서 그렇다는 글을 보기는 했습니다만... ^^;;
:        3. 저런 오류가 없이도, 아래아 한글이나, MS 파워포인트는 화면이 간혹 깨지기는 했습니다만...
smleelms [smleelms]   2009-07-24 01:59 X
헉스.. 역시나 아직 안주무시고.. ^^;;;  선리플 후감상입니다. ㅎㅎ
박지훈.임프 [cbuilder]   2009-07-24 02:11 X
아.. 이제 자러 갑니다.

잠자리에 들기 전에 각 커뮤니티들로 마실 나왔었습니다. ^^
smleelms [smleelms]   2009-07-24 02:16 X
네.. 수고가 많으십니다. 안녕히 주무세요~

+ -

관련 글 리스트
16409 코드기어 툴 및 제작된 프로그램 오류.. smleelms 4439 2009/07/24
16410     Re:코드기어 툴 및 제작된 프로그램 오류.. 박지훈.임프 6509 2009/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.