Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Создаем биржевого робота уроки, статьи, идеи arrow Урок 11. Тестируем классы на утечку памяти (GlobalMemoryStatus, MemAvail).
18.10.2019 г.
Главное меню
Главная
Интернет магазин
Дистанционное обучение
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Ча. Во. (FAQ)
Статьи
Услуги
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Друзья сайта
Excel-это не сложно
Все о финансах
Краткие новости
Урок 11. Тестируем классы на утечку памяти (GlobalMemoryStatus, MemAvail). Печать E-mail
Автор megabax   
03.12.2009 г.
New Page 1

Тестируем классы на утечку памяти (GlobalMemoryStatus, MemAvail).

Все статьи по данной теме.

В этом уроке вам понадобиться материал (программные коды) предыдущих уроков:

Сначала мы проверим класс TPASSPriceSource. Это можно сделать вот такой программкой (кинем сперва на форму компонент TListBox и назовем его lbMemory) :

procedure TfrmMomentum.itLoadClick(Sender: TObject);
var lpBuffer: TMemoryStatus; i:integer;
begin
     GlobalMemoryStatus(lpBuffer);
     lbMemory.Items.Add(FloatToStr(lpBuffer.dwAvailPhys)+' --- '+
     FloatToStr(lpBuffer.dwAvailVirtual));
     if odOpenDialog.Execute then
     begin
        for i:=1 to 100 do
        begin
            if FPriceSource<>nil then FreeAndNil(FPriceSource);
            FPriceSource:=TPASSPriceSource.Create(odOpenDialog.FileName,false);
            FPriceSource.LoadDataFromTextFile(odOpenDialog.FileName);
        end;
     end;
     lbMemory.Items.Add(FloatToStr(lpBuffer.dwAvailPhys)+' --- '+
     FloatToStr(lpBuffer.dwAvailVirtual))
end;

вот что она нам выдаст:

утечка памяти (GlobalMemoryStatus, MemAvail)

Как видим, после ста создаваний и удалений объекта объем памяти не уменьшился. Следовательно, в этом классе утечки памяти нет.

Сделаем еще один тест. Закомментарим строку

FPriceSource.LoadDataFromTextFile(odOpenDialog.FileName);

и увеличим количество повторений цикла до 100000. Смотрим результат:

утечка памяти (GlobalMemoryStatus, MemAvail)

 

Теперь перейдем к классу TPASSMomentum:

procedure TfrmMomentum.btnTestClick(Sender: TObject);
var lpBuffer: TMemoryStatus; i:integer;
begin
      GlobalMemoryStatus(lpBuffer);
      lbMemory.Items.Add(FloatToStr(lpBuffer.dwAvailPhys)+' --- '+
              FloatToStr(lpBuffer.dwAvailVirtual));
      for i:=1 to 100000 do
      begin
         if FIndicator<>nil then FreeAndNil(FIndicator);
         FIndicator:=TPASSMomentum.Create(3,'Close');
      end;
      lbMemory.Items.Add(FloatToStr(lpBuffer.dwAvailPhys)+' --- '+
              FloatToStr(lpBuffer.dwAvailVirtual))
end;

Вот что выдала программа:

утечка памяти (GlobalMemoryStatus, MemAvail)

Как видим, и в этом классе тоже не возникает утечки памяти.

Теперь проверим класс TPASSStatAnalizMomentum:

procedure TfrmMomentum.btnTestClick(Sender: TObject);
var lpBuffer: TMemoryStatus; i:integer; SA:TPASSStatAnalizMomentum;
begin
    GlobalMemoryStatus(lpBuffer);
    lbMemory.Items.Add(FloatToStr(lpBuffer.dwAvailPhys)+' --- '+
    FloatToStr(lpBuffer.dwAvailVirtual));
    for i:=1 to 100000 do
    begin
         SA:=TPASSStatAnalizMomentum.Create(nil,10, nil);
         SA.Free;
    end;
    lbMemory.Items.Add(FloatToStr(lpBuffer.dwAvailPhys)+' --- '+
    FloatToStr(lpBuffer.dwAvailVirtual))
end;

Вот что выдала нам программа:
утечка памяти (GlobalMemoryStatus, MemAvail)

На этом мы закончим тестирование классов, класс TPASSStatStoreDataList проверять не будем, он является вспомогательным, но если хотите, то протестируйте его самостоятельно и убедитесь, что и  в нем нет утечки памяти.

 

 

Последнее обновление ( 04.07.2013 г. )
 
« След.   Пред. »
 
© 2019 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги