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
[54325] Ado 사용시의 메모리 증가 문제??
커트 [] 1824 읽음    2008-08-14 17:21
10초간격으로 멀티 쓰레드(12개)를 실행합니다. 쓰레드는 실행완료 후 종료되구요.
쓰레드안에서 하는일은  ado를 이용하여 DB 연결 및 쿼리수행을 하는 동작을 합니다.
쓰레드마다 각기 다른 db 세션을 연결하고 select 후 insert를 수행합니다.
ado는 초기화를 하고 자원 사용 후 모두 clear해주는데도 메모리가 계속증가하는 현상이 발생합니다.
10초마다 DB Connect, DisConnect 하는 부분이 걸리기는하는데 테스트결과 크나큰 성능저하는 없는것으로
보입니다.(메모리 증가도 없구요)
ado에서 메모리 사용은 ado->Open(); 에서 증가하는데 객체 사용 후 모두 초기화를 하는데도 메모리가 증가하네요.
할수 있는건 다한거 같은데 답답하네요..도와 주세요...

간단하게 다음과 같은 로직입니다.

void 쓰레드()
{
    ::CoInitialize(NULL);    // COM객체 초기화
     TADOConnection *AdoConn = new TADOConnection(NULL);
     AdoConn->ConnectionString = "오라클연결정보";
     AdoConn->LoginPrompt = false;
     TADOQuery *Ado = new TADOQuery(NULL);
     Ado->Connection = AdoConn;
     Ado->SQL->Clear();
     Ado->SQL->Add("쿼리문장");
     Ado->Open();

     for(;!Ado->Eof;Ado->Next()){
          // Eof 루프 돌면서 로직 처리
     }
    
     // Ado Close
     Ado->Close();
     delete Ado;
    
     // Ado Connect Close
     if(AdoConn)
     {
           AdoConn->Close();
           delete AdoConn;
     }
     ::CoUninitialize();    //COM library Clear
     _endthread();        //  쓰레드 종료
}

+ -

관련 글 리스트
54325 Ado 사용시의 메모리 증가 문제?? 커트 1824 2008/08/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.