TOraSession утечка памяти

Обсуждение возникших проблем, предложений и ошибок ODAC компонентов

Ответить
cangaroo
Сообщения: 3
Зарегистрирован: Пн 30 сен 2019 10:39

TOraSession утечка памяти

Сообщение cangaroo » Пн 30 сен 2019 10:45

Добрый день.
Приложение скомпилировано для Target Platforms - Win64 на Delphi XE10 Seattle Professional, используется Devart ODAC 9.7.26 for Delphi 10, в приложении происходит коннект к БД ORACLE (Oracle Database 12c Release 12.1.0.1.0 - 64bit Production; CORE 12.1.0.1.0 Production; TNS for 64-bit Windows: Version 12.1.0.1.0 - Production; NLSRTL Version 12.1.0.1.0 - Production) примерно 4 раза в секунду. При этом наблюдается непрерывный рост потребляемой памяти, а также непрерывный PageFault (Столбцы "Память" и "Ошибки страниц" в Диспетчере задач Windows). Приложение запускалось в среде Windows 7 64 Профессиональная Servise Pack 1 и Windows Server 2008 R2 Enterprise Servise Pack 1 (64 bit)
Исходник приложения ниже:

Код: Выделить всё

unit form_main;

interface

uses
  Winapi.Windows,
  System.SysUtils, System.Classes,
  Vcl.Controls, Vcl.Forms, Vcl.StdCtrls,
  Ora, OraCall;

type
  Tfrm_main = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    FOraSession1: TOraSession;
    FOraQuery1: TOraQuery;
    FDoStop: boolean;
  public
    { Public declarations }
  end;

var
  frm_main: Tfrm_main;

implementation

{$R *.dfm}

procedure Tfrm_main.FormCreate(Sender: TObject);
const
    qr = 'select * from ddaoutput order by id';
begin
  FDoStop:= False;

  FOraSession1:= TOraSession.Create(nil);
  FOraSession1.ThreadSafety:=   True;
  FOraSession1.ConnectPrompt:=  False;
  FOraSession1.Options.Direct:= True;
  FOraSession1.Options.UseUnicode:= True;
  FOraSession1.ConnectString:= 'testuser/tiger@192.168.X.Y:1521:xe';

  FOraQuery1:= TOraQuery.Create(nil);
  FOraQuery1.SQL.Clear;
  FOraQuery1.SQL.Text:= qr;
end;

procedure Tfrm_main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FOraSession1.Free;
  FOraQuery1.Free;
end;

procedure Tfrm_main.Button1Click(Sender: TObject);
begin
  while True do
  begin
    try
      FOraSession1.Connect;

      FOraQuery1.Session:= FOraSession1;
      FOraQuery1.Open;

      Application.ProcessMessages;
    finally
      FOraQuery1.Close;
      FOraSession1.Disconnect;
      sleep(250);
    end;
  end;
end;

end.
Также, данное приложение было скомпилировано с Devart ODAC 11.0.1 Trial for Delphi 10 - результат тот же, непрерывная утечка памяти и непрерывный PageFault.
Также, в приложении был оставлен только коннект, (все что связано с запросом было удалено) - результат тот же, непрерывная утечка памяти и непрерывный PageFault.
Также изменили БД, выполнили коннект к Oracle XE 64 bit - результат тот же, непрерывная утечка памяти и непрерывный PageFault.
Прошу прокомментировать данную ситуацию.

MaximG
Devart Team
Сообщения: 99
Зарегистрирован: Пн 06 июл 2015 12:51

Re: TOraSession утечка памяти

Сообщение MaximG » Вт 01 окт 2019 17:26

Мы исследуем описываемую проблему и сообщим Вам о результатах как только получим их

MaximG
Devart Team
Сообщения: 99
Зарегистрирован: Пн 06 июл 2015 12:51

Re: TOraSession утечка памяти

Сообщение MaximG » Чт 03 окт 2019 13:24

Мы исправили описываемую Вами ошибку. Исправление войдет в следующую версию ODAC. В качестве временного решения мы можем выслать Вам ночную сборку нашего продукта. Для этого сообщите номер своей лицензии и интересующую Вас версию IDE с помощью формы e-support : https://www.devart.com/company/contactform.html

cangaroo
Сообщения: 3
Зарегистрирован: Пн 30 сен 2019 10:39

Re: TOraSession утечка памяти

Сообщение cangaroo » Пт 04 окт 2019 13:51

Спасибо вам, что исправили ошибку.
Пытаюсь перейти по адресу формы e-support : https://www.devart.com/company/contactform.html (который вы указали) ввожу email указанный при регистрации на форуме devart и пароль от логина на форуме devart, но получаю ошибку - Invalid user name or password (хотя причем тут username когда требуется указать email?)
Что я делаю неправильно?

cangaroo
Сообщения: 3
Зарегистрирован: Пн 30 сен 2019 10:39

Re: TOraSession утечка памяти

Сообщение cangaroo » Пт 04 окт 2019 13:58

Разобрался, что там за email и пароль нужно вводить. Форму заполнил.
Жду от вас ночную сборку.

MaximG
Devart Team
Сообщения: 99
Зарегистрирован: Пн 06 июл 2015 12:51

Re: TOraSession утечка памяти

Сообщение MaximG » Вт 08 окт 2019 10:06

Для получения ночной сборки нашего продукта, включающей все необходимые изменения, необходимо иметь действующую подписку. Срок действия Вашей подписки на ODAC истек. Для ее продления воспользуйтесь своей учетной записью Devart на портале https://secure.devart.com, используя адрес электронной почты в качестве логина. После того, как вы нажмете кнопку «Renew now», вы будете перенаправлены на страницу оформления заказа, где сможете выбрать необходимый способ оплаты, заполнить личную информацию и оформить заказ.

Ответить