Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.042 c
15-1181497626
default
2007-06-10 21:47
2007.07.08
Гостиница в москве


3-1175791322
Kley
2007-04-05 20:42
2007.07.08
Фильтрация при открытии формы


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


2-1181682276
hprx
2007-06-13 01:04
2007.07.08
БД в Delphi


2-1181880453
Max_
2007-06-15 08:07
2007.07.08
MySQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский