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;
|