|
// 작업
부분에서 메모리 해제 안한 부분이 있는지 확인해 보시는게 좋을 듯합니다
하안인 님이 쓰신 글 :
: 타이머내에서
:
: Timer1->Enabled = false;
:
: try
: {
: //작업
: }
: __finally
: {
: Timer1->Enabled = true;
: }
:
: 로 코딩하였구요.
:
: DB접속은 devart 의 UniDAC 컴포넌트를 사용해서 오라클에 접속합니다.
: UniDAC 에 두가지 옵션이 있는데
: Connection을 유지해서 작업하는 것이 있구요.
: Connection을 pooling 을 true로 해놓으면 connection 속도가 빨라서
: 그때 열고 끝나면 닫을 수 있도록 되어 있어서 사용했습니다.
:
: 위의 타이머 구조에서 문제가 있을 수 있나요.
:
:
: 돌맹이 님이 쓰신 글 :
: : 혹, 3초에 한 번씩 수행하는 작업이 3초를 초과하는 경우가 있지 않을까요?
: : 간혹 이렇게 다음 이벤트가 발생할 때까지 수행 이벤트가 끝나지 않으면,
: : 이런 상황이 중첩되다 보면 이런 상황으로 도달하는 것으로 알고 있습니다.
: :
: : 3초마다 계속 DB 접속을 새로하는 것 같은데,
: : 한 번 접속 후 계속사용하는 것으로 해도 되지 않을까요? 너무 많은 오버해드가 있을 것 같네요.
: : 만약 작업이 오래 걸리면 이 작업은 스레드로 빼고, 타이머 이벤트에서는 스레드에 이벤트만
: : 던져주는 방식으로 수정해도 괜찮을 것 같네요.
: :
: : 도움이 되셨기를...
: :
: : 하안인 님이 쓰신 글 :
: : :
: : : c++buider6.0을 사용하고 있습니다.
: : :
: : : 타이머를 작동해서 3초에 한번씩 데이타베이스에 접근해서 퀴리한 후
: : : 데이타베이스를 닫고 종료한후 다시 타이머를 가동해서
: : : 반복적으로 일을 수행합니다.
: : :
: : : 그런데 1~3일정도 프로그램을 실행하면 out of memory 메시지가 나오네요.
: : :
: : : 변수를 메모리를 할당하지도 않고
: : :
: : : 퀴리를 돌려서 사용하는것 밖에 없는데요.
: : :
: : : 어떤 것을 봐야 할까요?
: : :
: : : 감사합니다.
|