Главная страница
    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.043 c
2-1181826144
SunriseGirl
2007-06-14 17:02
2007.07.08
коды клавиш в Delphi


2-1181928234
alpha5
2007-06-15 21:23
2007.07.08
Как показать форму аналогично PopupMenu


3-1176381602
svt
2007-04-12 16:40
2007.07.08
Уважаемы мастера,подскажите что может быть с соединением


4-1170336758
Vladix
2007-02-01 16:32
2007.07.08
Завершение некоторых процессов с одинаковым именем


15-1181221627
Vendict
2007-06-07 17:07
2007.07.08
Градиент через div





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский