We have found a leak when we create a new session with Oracle Client 8.1.7. If we use Oracle Client 8.1.6 we don't have the leak. We use Oracle 8.1.7 server. If we look at the Heap status we don't see the leak however if we track the process in the Task Manager, the memory usage increases each time we create a session and we free it. Sleuth QA is unable to find any leak. Do you have an idea ?
procedure TForm1.Button1Click(Sender: TObject);
const
MAX_ITER = 100;
var
i : Integer;
_session : TOracleSession;
_heapStatus : THeapStatus;
_initialHeapStatus : THeapStatus;
_finalHeapStatus : THeapStatus;
begin
_initialHeapStatus := GetHeapStatus;
for i := MAX_ITER-1 downto 0 do
begin
edtIter.Text := IntToStr(i);
edtIter.Update;
_session := TOracleSession.Create(nil);
_session.LogonUsername := MYUSERNAME';
_session.LogonPassword := MYPASSWORD';
_session.LogonDatabase := 'DEVSVR';
_session.LogOn;
_session.Free;
_heapStatus := GetHeapStatus;
ShowHeapStatus(_heapStatus);
end;
_finalHeapStatus := GetHeapStatus;
edtDiffTotalAddrSpace.Text := IntToStr(_finalHeapStatus.TotalAddrSpace-_initialHeapStatus.TotalAddrSpace);
edtDiffTotalAllocated.Text := IntToStr(_finalHeapStatus.TotalAllocated-_initialHeapStatus.TotalAllocated);
MessageBeep(0);
end;
thank you
David
procedure TForm1.Button1Click(Sender: TObject);
const
MAX_ITER = 100;
var
i : Integer;
_session : TOracleSession;
_heapStatus : THeapStatus;
_initialHeapStatus : THeapStatus;
_finalHeapStatus : THeapStatus;
begin
_initialHeapStatus := GetHeapStatus;
for i := MAX_ITER-1 downto 0 do
begin
edtIter.Text := IntToStr(i);
edtIter.Update;
_session := TOracleSession.Create(nil);
_session.LogonUsername := MYUSERNAME';
_session.LogonPassword := MYPASSWORD';
_session.LogonDatabase := 'DEVSVR';
_session.LogOn;
_session.Free;
_heapStatus := GetHeapStatus;
ShowHeapStatus(_heapStatus);
end;
_finalHeapStatus := GetHeapStatus;
edtDiffTotalAddrSpace.Text := IntToStr(_finalHeapStatus.TotalAddrSpace-_initialHeapStatus.TotalAddrSpace);
edtDiffTotalAllocated.Text := IntToStr(_finalHeapStatus.TotalAllocated-_initialHeapStatus.TotalAllocated);
MessageBeep(0);
end;
thank you
David