Опять утечка памяти, блин

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Опять утечка памяти, блин

Сообщение serg_iv » 09.07.2008 19:21:03

Опять нашел утечку памяти- при перересовке формы form.Repaint.
В компонентах
вкладка Standart:
- Label
- Panel

вкладка Additional
- speedButton
- labeledEdit
- Splitter
- StringGrid
- DrawGrid
- ColorListBox

На других вкладках пока не проверял.
Кто может, прошу проверить:
на форму ложим таймер, Interval := 1 (быстрее видно заполнение)
внутри
Код: Выделить всё
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Repaint;
end;

после этого ложим на форму по очереди указаные компоненты и наблюдаем рост потребляемой памяти.

Уф!..
Че делать то?

PS: GTK2, на других не проверял.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Опять утечка памяти, блин

Сообщение Attid » 10.07.2008 10:35:07

serg_iv писал(а):Че делать то?

в трекер идти
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Опять утечка памяти, блин

Сообщение VirtUX » 10.07.2008 11:46:21

Проверил на TPanel - никакой утечки памяти нет!!! Блее полный код можешь выложить?

Добавлено спустя 201 секунду:
Проверил с TLabel - результат отрицательный! Все нормально!

Добавлено спустя 109 секунд:
Вот мой код для проверки:
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  ifor: integer;
begin
  for ifor:= 0 to 10000 do
    begin
      Repaint;
      sleep(1);
    end;
end;

initialization
  {$I unit1.lrs}

end.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Опять утечка памяти, блин

Сообщение serg_iv » 10.07.2008 12:20:58

Virtux, для очистки совести переписал код буква в букву, размер увеличивается с 3,6 Мб до 7,3. Смотрю в гномовском системном мониторе.
Может я не так смотрю? Иль не на то?
Версия Лазаря 0.9.25 20080528 ubuntu 8.04
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Опять утечка памяти, блин

Сообщение VirtUX » 10.07.2008 12:37:37

Извиняюсь. Смотрел по общему использованию памяти - вроде все в норме, но сам процесс дейсно показывает увеличение используемой памяти. Такая же проблема и при Refresh.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Опять утечка памяти, блин

Сообщение serg_iv » 10.07.2008 12:42:52

Ну, кто идет в трекер?
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Опять утечка памяти, блин

Сообщение VirtUX » 10.07.2008 15:21:42

У меня с англицким туговато :)
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Опять утечка памяти, блин

Сообщение serg_iv » 10.07.2008 18:41:58

Запостил на английский форум, надеюсь они меня поняли.
Я сам себя там понял с большим трудом. :oops:

Добавлено спустя 14 часов 42 минуты 36 секунд:
Смотрел трекер, не нашел такого.
Может кто все таки запостит? Я честно пытался, но только не получается почему то.
То-ли мозгов не хватает, то-ли ... на этом мысль останавливается.
На английском форуме меня ваще вряд ли поняли.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Опять утечка памяти, блин

Сообщение VirtUX » 11.07.2008 09:53:59

Либо ни у кого нет с этим проблем, либо никому это не нуна
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Опять утечка памяти, блин

Сообщение Attid » 11.07.2008 11:03:18

вечером проверю и запостю.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Опять утечка памяти, блин

Сообщение serg_iv » 11.07.2008 12:12:46

вечером проверю и запостю.

Спасиб.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Опять утечка памяти, блин

Сообщение NXP » 11.07.2008 15:23:19

Я похоже, тоже пострадал от утечек памяти. (под Win32)
Имею TreeView1.
Создаю там ноды и цепляю их друг к другу как надо. К каждому ноду прицелена Data (указатель на запись pNode_Rec)

Код: Выделить всё
  Node_Rec = packed record
    Node_ID:      integer;
    Node_Mode:    Byte;
  end;
  pNode_Rec = ^Node_Rec;


вот так, к примеру:
Код: Выделить всё

var  NodeData: pNode_Rec;

new(NodeData);
NodeData^.Node_ID   := 5;
TreeView1.Items.AddChildObject(RootNode, 'Новый', NodeData);


В процесс работы надо удалять ноды:
TreeView1.Selected.Delete;

При удалении вызывается «чистилка» памяти из под записи:
Код: Выделить всё
procedure TRoot.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
var NodeData: pNode_Rec;
begin
  if (Node = nil) then exit;
  if (Node.Data = nil) then exit;
  NodeData:= Node.Data;
  FreeMem(NodeData);
  Node.Data:= nil;
  Node.Delete;
end;   

Однако память не очищается :x С каждой перезагрузкой дерева из 10-20 элементов пожирается около 50 КБ памяти. Пробовал очищать NodeData перед выполнением TreeView1.Selected.Delete; но результат тот же (.
Что с ним можно поделать :?:
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Re: Опять утечка памяти, блин

Сообщение serg_iv » 11.07.2008 18:14:08

Тож в багтрекер идти. Тока я его ни асилил.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Опять утечка памяти, блин

Сообщение Attid » 11.07.2008 20:45:00

как-то плохо вы искали есть такое 9259 так как у него уже стоит важность большая заводить другой думаю не стоит

Добавлено спустя 2 минуты 46 секунд:
NXP писал(а):Что с ним можно поделать

определить утечку до одного компонента, а так не понятно что у тебя там TreeView виноват или сам где-то косячишь с NodeData
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Опять утечка памяти, блин

Сообщение Сергей Смирнов » 11.07.2008 21:08:27

Attid писал(а):...а так не понятно что у тебя там TreeView виноват или сам где-то косячишь с NodeData
Там NodeData на 50кБ при 20-ти узлах явно не тянет :)
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

Рейтинг@Mail.ru