Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: CL | DM;

Вниз

Почему ADOTable не чистит за собой память ?   Найти похожие ветки 

 
greySerg   (2005-07-01 12:03) [0]

есть такой код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
uses ADODB;

procedure TForm1.Button1Click(Sender: TObject);
var
 at: TADOTable;
 ac: TADOConnection;
begin
 ac := TADOConnection.Create(nil);
 ac.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;"+
                        "Data Source=D:\Expert2\NewData\expert.mdb;"+
                        "Persist Security Info=False;"+
                        "Jet OLEDB:System database=C:\System.mdw";
 try
   at := TADOTable.Create(nil);
   try
     at.Connection := ac;
     at.TableName := "M_DOCUMENT";
     at.CursorType := ctOpenForwardOnly;
     at.ReadOnly := True;
     at.CursorLocation := clUseServer;
     at.LockType := ltReadOnly;
     at.TableDirect := true;
     at.Open;
     while not at.Eof do
     begin
       at.Next;
     end;
   finally
     at.Close;
     at.Free;
   end;
 finally
   ac.Free;
 end;
end;

end.


После прохода всей таблицы выделяется 13 Мб (см. в Windows Task Managere), но я же в конце прохода всё освобождаю (at.Free;), почему память не освобождается ?(в Windows Task Managere вижу те же 13 Мб, вместо 2 Мб, которые были в начале запуска приложения, перед нажатием на кнопку Button1)

Мастера, в чем может быть дело ? ADOTable не освобождает память за собой  ?

P.S.: тестировал на Windows XP SP1


 
Ломброзо ©   (2005-07-01 12:07) [1]

greySerg   (01.07.05 12:03)
есть такой код:


Сверните формочку.
Разверните формочку.
Доложите о результатах.
--------
DMJS 0.6 | http://dmjsclient.narod.ru


 
Johnmen ©   (2005-07-01 12:09) [2]

Ну во первых, ты не разорвал коннект.
А во-вторых, ADO не освободит свои "кеши", пока не будет "деинициализировано", т.е. пока не завершишь своё приложение.


 
greySerg   (2005-07-01 12:14) [3]

> Johnmen

Как это не разорвал коннект , а ac.Free; что вы думаете означает ?

> Ломброзо

Да, Вы правы , свернул, развернул -и память уменьшилась , это винда не освобождает память занятым приложением, пока в этом нет необходимости , да ?


 
Digitman ©   (2005-07-01 12:19) [4]


> greySerg


в-третьих, для BMM это нормально


 
Ломброзо ©   (2005-07-01 12:21) [5]

greySerg   (01.07.05 12:14)
> Johnmen

Как это не разорвал коннект , а ac.Free; что вы думаете означает ?

> Ломброзо

Да, Вы правы , свернул, развернул -и память уменьшилась , это винда не освобождает память занятым приложением, пока в этом нет необходимости , да ?


Я не знаю :) эмпирически замечено. Task manager частенько выдаёт температуру солнца или численность пингвинов, но только не действительно занятую память.

--------
DMJS 0.6 | http://dmjsclient.narod.ru



Страницы: 1 вся ветка

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
4-1118239228
PIF
2005-06-08 18:00
2005.08.07
Права администратора


1-1121698763
}{eRsOn
2005-07-18 18:59
2005.08.07
RxRichEdit - частично пропадает форматирование в файле


1-1121860869
MegaVolt
2005-07-20 16:01
2005.08.07
Замена Move для маленьких объёмов данных.


14-1121457792
[wl]
2005-07-16 00:03
2005.08.07
Что почитать из фантастики?


6-1114289325
Keal
2005-04-24 00:48
2005.08.07
Чат или как найти все серверы?