답변 감사합니다. (__)
프로그램 구동에서 종료 시점까지 KeepConnection을 맺고 있는데 계속 메모리가 누수되었습니다.
현재는 필요할때 마다 연결 - 작업 - 끊기 형태로 작업을 진행하니 어느정도 메모리 문제에서 벗어났습니다.
앞으로는 dbExpress나 IBExpress로 작업을 진행해야겠습니다.
그럼 (__)
박지훈.임프 님이 쓰신 글 :
: Zeos를 쓰시는 거 같은데.. 전 써본 적이 없습니다. 그리고 그런 메모리 리크를 경험해본 적도 없고요.
: 검색해보니 Zeos에 메모리 리크 문제가 많다는 글들이 많더군요. 이미 픽스된 것도 있지만 남은 것도 상당한 듯...
: 표준인 dbExpress나 IBExpress, 아니면 서드파티의 다른 컴포넌트를 써보시는 건 어떠실지...?
:
: 그럼...
:
:
: GomSun2 님이 쓰신 글 :
: : 안녕하세요
: :
: : SP를 통해 Data의 Insert를 진행할려고 합니다.
: :
: : 다음의 코드를 실행하면 문제 없이 실행되는데
: :
: : 프로그램과 fbserver.exe의 메모리가 점점 증가 되는 현상(누수)이 벌어 짐니다.
: :
: : 이문제로 몇일째 방법을 찾고 있는데 딱히 해결책이 보이지 습니다. ㅜㅜ
: :
: : -----------------
: : 사용 SP
: : -----------------
: : CREATE OR ALTER PROCEDURE INSERT_RAIN_PERCEIVE (
: : S_DATETIME TIMESTAMP) /* 측정시간 */
: : AS
: : BEGIN
: : INSERT INTO RAIN_PERCEIVE_RAW ( RAIN_PERCEIVE_START, RAIN_PERCEIVE_END)
: : VALUES ( :S_DATETIME, NULL);
: : END
: :
: : ----------------
: : delphi code
: : ----------------
: : procedure TFDataModule.SP_Insert_RainPerceive(DT: TDateTime);
: : var
: : ZSp: TZStoredProc;
: : sTmp: String;
: : begin
: : if FDBCon = nil then
: : begin
: : WriteLog(' Err: SP_Insert_RainPerceive, Connection 객체가 생성되지 않았습니다.');
: : Exit;
: : end;
: :
: : FDBCon.StartTransaction;
: : ZSp := TZStoredProc.Create(nil);
: : ZSp.Connection := FDBCon;
: :
: : try
: : ZSp.StoredProcName := 'INSERT_RAIN_PERCEIVE';
: : ZSp.Params.Clear;
: :
: : ZSp.Params.CreateParam(ftDateTime, 'S_DATETIME', ptInput).Value := Dt;
: :
: : try
: : ZSp.ExecProc;
: : ZSp.Active := TRUE; // 이부분 제거시 insert는 이루어지는데 메모리가 계속 증가됩니다.
: :
: : FDBCon.Commit;
: : except
: : on E: Exception do begin
: : sTmp := E.Message;
: : WriteLog(' Err: INSERT_RAIN_PERCEIVE' + sTmp);
: : FDBCon.Rollback;
: : end;
: : end;
: : finally
: : ZSp.Active := FALSE; //
: : ZSp.Destroy;
: : end;
: :
: : end;
|