C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[13059] Re:[질문] DB사용프로그램 디버깅시 메모리부족.
박지훈.임프 [cbuilder] 836 읽음    2001-11-23 23:43
저는 데이터베이스 전문은 아니라서 확신할 수는 없지만...
경험상으로는 오픈된 데이터베이스 연결, 오픈된 쿼리 혹은 테이블마다 상당한 메모리를 먹는 것 같습니다.
그런데 이런 현상이 실제로 필드에서 운영할 때는 거의 문제가 안되는 것 같습니다만,
디버깅모드에서는 어떤 이유에서인지 계속 누적되는 것 같다는 느낌을 갖고 있습니다.

디버깅모드에서만 문제가 될 것이므로... 디버깅을 위해서 소스를 약간 변경시키는 것이 좋을 듯 합니다.
사용한 데이터베이스 연결과 쿼리/테이블들을 바로바로 클로즈시키는 쪽으로 코딩을 하시구요.
#define 프리프로세서인 _DEBUG를 소스에 추가시켜놓는 것이 좋겠습니다.

#ifdef _DEBUG
Query->Close();
#endif

엉뚱한 추측으로 아리랑님을 더 헷갈리게 해드리는 것이 아닌가 하고 걱정이 됩니다만... --;;
일단 아무런 대책도 없는 것보단 나을 것 같아서 좀 주제넘게 나서봤습니다.

그럼...


아리랑 님이 쓰신 글 :
: 안녕하세요?
:
: 빌더 5.0으로 DB관련 프로그래밍을 하고 있습니다.
: ODBC및 DM을 사용하고 있고, 모든 Query들의 Active는 디폴트로 false입니다.
: 프로그래밍중에 디버깅모드로 자주 실행하는데 한 10여번 디버깅하고 나면 메모리부족으로 더이상 실행할수 없다고 합니다.
: 이럴때는 빌더를 종료했다가 다시 실행해야 정상적으로 돌아오구요.
:
: 디비에 레코드개수는 약 26만개 정도지만 한번에 Open되는 Query는 2-3개정도구요. 한번에 불려오는 레코드는 최고 3-4개입니다.
: DB는 MySql이구요. 종료시 Query를 Close하지 않아서 그런가 해서 Form Close()시 모든 Query들을 Close해봐도 마찮가지더군요.
:
: 또한 Cmd 모드에서 Netstat -an으로 물려있는 소켓을 보면 Query개수와 거의 일치합니다. 물론 TIME_OUT걸려있는것도 몇개 보이지만 누적되는건 아니더군요.
:
: 실제로 다른 Form을 열기위해 메모리 할당된것은 디버깅모드를 종료하면 반환되는것으로 알고 있구요. 또한 그거 믿고 new로 할당한 메모리를 그냥 놔두는건 아니고 일일이 delete해 주고 있습니다.
:
: win 2K pro이구요.
: P-III 700에 메모리 512K입니다.
:
: 이전 Project에선 DB는 사용하지 않았지만 Socket을 사용한 multi Ansi 터미널로서 덩치는 지금것보다 10배는 더 컷지만 메모리 부족으로 빌더를 종료한적은 한번도 없었거든요.
:
:
:
:

+ -

관련 글 리스트
12976 [질문] DB사용프로그램 디버깅시 메모리부족. 아리랑 823 2001/11/22
13059     Re:[질문] DB사용프로그램 디버깅시 메모리부족. 박지훈.임프 836 2001/11/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.