Главная страница
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.049 c
14-1121667418
Vovchik_A
2005-07-18 10:16
2005.08.07
Умер Спартак Мишулин


14-1121535997
Cincinnut
2005-07-16 21:46
2005.08.07
The Doors


4-1118057183
pavel_guzhanov
2005-06-06 15:26
2005.08.07
можно ли преобразовать файл *.pdf в файл изображения?


4-1118215991
kkostik
2005-06-08 11:33
2005.08.07
Drag&Drop


14-1121689220
ArchValentin
2005-07-18 16:20
2005.08.07
Люди, срочно нужна помощь с написанием проги...