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

Вниз

Ужасно много кушается памяти!!!   Найти похожие ветки 

 
DEVELA   (2007-06-13 10:47) [0]

Программа из более чем 200 форм MDI, использующая классы:
Application,TBatchMove,TBevel,TBitBtn,TBitmap,
   TBrush,TButton,TButtonControl,TBytesField,TCanvas,TCheckBox,
   TClipboard,TColorDialog,TComboBox,TComboButton,TComboButton,
   TCommonDialog,TComponent,TControl,TControlCanvas,TControlScrollBar,
   TCurrencyField,TCustomCheckBox,TCustomComboBox,TCustomControl,
   TCustomDBGrid,TCustomEdit,TCustomGrid,TCustomGroupBox,
   TCustomLabel,TCustomListBox,TCustomMaskEdit,TCustomMemo,
   TCustomOutline,TCustomPanel,TCustomRadioGroup,TDBCheckBox,
   TDBComboBox,TDBDataSet,TDBEdit,TDBImage,TDBListBox,TDBLookupCombo,
   TDBLookupList,TDBMemo,TDBRadioGroup,TDBText,TDataLink,TDataSet,
   TDdeMgr,TDdeServerConv,TDdeServerItem,TDirectoryListBox, TDrawGrid,TDriveComboBox,TEdit,TField,TFieldDataLink,TFieldDef,TFieldDefs,TFileL istBox,
   TFontDialog,TForm,TGraphic,TGraphicControl,
   TGraphicField,TGraphicsObject,TGridDataLink,TGroupBox,
   TLabel,TMainMenu,    TSpeedButton,  TBitmap, TIcon,
   TMaskEdit,TMediaPlayer,TMemo,TMemoField,TMenu,TMenuItem,TMetafile,
   TNavButton,TNavDataLink,TNotebook,
   TNumericField,TOpenDialog,TOutline,TOutlineNode,
   TPage,TPaintBox,TPanel,TParam,tpicture,
   TPersistent,TPicture,TPopupGrid,TPopupMenu,TPrinterSetupDialog,
   TQuery,TRadioButton,TRadioGroup,TReplaceDialog,
   TSaveDialog,TScreen,TScrollBar,TScrollBox,TScrollingWinControl,
   TSession,TShape,TSmallintField,TSpeedButton,
   TStoredProc,TStringField,TStringGrid,TStringGridStrings,TStringList,TStrings,
   TTabSet,TTable,TTimeField,TTimer,TVarBytesField,TWinControl,
   TWordField, TControl, TControlCanvas, TCustomControl,TCustomListControl,TCustomMultiSelectListControl,
   TGraphicControl, THintWindow,TImageList, TSizeConstraints, TBoundLabel,
   TColorBox,TControlBar,TCustomControlBar,THeader,
   TImage,TLabeledEdit,TIdEncoderXXE, Tanimate, TCustomHeaderControl,
   TCustomListView, TCustomTabControl,
   TCustomTreeView,
   THeaderControl, THeaderSection, THeaderSections,TIconOptions,
   TListColumn, TListColumns, TListItem, TListItems,
   TListView, TPageControl, TProgressBar, TStatusBar, TStatusPanel,
   TStatusPanels, TTabControl, TTabSheet,TToolBar,
   TToolButton,TTrackBar,TTreeNode, TTreeNodes, TListBox,TForm,TTreeView

и юниты

 Windows,     SysUtils       ,       Classes,
 Graphics,    Forms          ,       Controls,
 Menus,       StdCtrls       ,       Dialogs,
 Buttons,     Messages       ,       ExtCtrls,
 ComCtrls,    StdActns       ,       ActnList,
 ToolWin,     ImgList        ,       DB,
 ADODB,       jpeg           ,       typinfo,
 OUTLINE,     DBTABLES       ,       DBGRIDS,
 MASK,        DBCTRLS        ,       DDEMAN  ,
 FILECTRL,    tabs           ,       DBLOOKUP,
 MPLAYER,     CLIPBRD        ,       SysConst,
 uINN_PF,     WinInet        ,       registry,
 Grids,       IWControl      ,       IWCompEdit,
 IWDBStdCtrls,IdBaseComponent,       IdCoder,
 IdCoder3to4, IdCoderUUE     ,       IdCoderXXE,
 OleCtrls,    AgentObjects_TLB,      XPMan,
 WinSkinStore,WinSkinData    ,       oaTypes,  uINIControl,  inifiles,
 UrlMon,
 oaAssist, IdComponent, IdCustomTCPServer, IdMappedPortTCP, IdIPAddrMon,
 IdIPWatch, AppEvnts, ActnMan, ActnColorMaps, TeeProcs, TeEngine, Chart

Уж очень много хавает памяти, почти 64 Мега, подскажите как можно уменьшить объем используемой памяти, или хотябы распределять ее во время работы программы а не при загрузке. Вариант использовать sharemem, не использовать VCL, и вообще сократить использование в uses"ах исключены!!!

Работаю на Borland Delphi 2006


 
clickmaker ©   (2007-06-13 10:51) [1]


> распределять ее во время работы программы а не при загрузке

надеюсь, все формы не в autocreate?


 
Сергей М. ©   (2007-06-13 11:03) [2]


> IWControl      ,       IWCompEdit,
>  IWDBStdCtrls


Интересно, что делают эти юниты в uses, если приложение явно GUIшное и ни один из классов, декларированных/реализованных в этих юнитах, не фигурирует в упомянутом списке ?

Если копнуть глубже, то, пожалуй, можно найти еще не один такой юнит, бестолково упомянутый в uses.


 
Desdechado ©   (2007-06-13 11:38) [3]

1. Сократить использование украшательств на формах.
2. Не держать открытыми постоянно датасеты с большим числом записей. И вообще не выбирать данных по многу.


 
grisme ©   (2007-06-13 13:28) [4]

ну, думаю, если уж проект имеет такой масштаб, то разработчики не хранят датасеты открытыми %-) вообще, это даже странновато. а вот по оптимизации что тут сказать, нужно оставить все как есть ) ибо для такой софтины 64 метра вроде не так много. а если и много, то значит изначально неверно проектировалось и в конце-концов развалится =\


 
DVM ©   (2007-06-13 14:01) [5]


> Уж очень много хавает памяти, почти 64 Мега

Это много по-вашему?


 
Котик Б   (2007-06-13 14:57) [6]

Аааааааа......

у меня программа с таким кодом

 IBQuery1.Close();
 IBQuery1.SQL.Text := "select * from VIEW$GET_FULL_STRUCTURE";
 IBQuery1.Open();
 IBQuery1.FetchAll();

занимает 256 Метров !!!

Помогите :)))


 
Dust ©   (2007-06-14 13:03) [7]

2 Котик Б
Именно так. т.е. почти...

IBQuery1.Close();
IBQuery1.Open();
while not IBQuery1.eof do
begin
....
IBQuery1.Next;
end;


Мне как-то пришлось тулзу писать с вот таким кодом, другого подхода я тогда не придумал. Смысл был в том, чтобы обработать большой массив данных из запроса (запрос возвращал блобы).
Ежли такой умный, может подскажешь, что нужно было делать, а то мы запускали тулзу раз эдак 15 в связи с окончанием свободной памяти системы.


 
Desdechado ©   (2007-06-14 13:07) [8]

> обработать большой массив данных из запроса (запрос возвращал блобы).
Если ты фетчишь все, то будут проблемы. А ты не фетч и используй датасет с опцией Unidirectional. Тогда на клиенте в каждый момент только одна запись.


 
Anatoly Podgoretsky ©   (2007-06-14 13:09) [9]

> то будут проблемы.

Уже есть.


 
Dust ©   (2007-06-14 13:30) [10]

это было год назад, и я совершенно точно помню что Unidirectional я менял и туда и обратно. Собственно что я тогда только не менял. если выбирать те же самые блобы и упростить код до безобразия:

IBQuery1.Open();
while not IBQuery1.eof do
begin
IBQuery1.Next;
end;


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


 
Desdechado ©   (2007-06-14 13:42) [11]

> таких экспериментов было проведено тогда не мало.
Наобум или использовалась теория планирования эксперимента?
TIBDataSet пробовал?



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

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

Наверх




Память: 0.5 MB
Время: 0.018 c
2-1181812628
emilya_o
2007-06-14 13:17
2007.07.08
key violation


2-1181735253
SunriseGirl
2007-06-13 15:47
2007.07.08
DBGrid


4-1170202435
Gukov
2007-01-31 03:13
2007.07.08
как получить хэндл потока


2-1181653235
Officeman
2007-06-12 17:00
2007.07.08
удаление 1 элемента из двух таблиц


2-1181898235
Strate
2007-06-15 13:03
2007.07.08
Проверить тип указателя