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

Вниз

Как ликвидировать выделенную память под компонент.   Найти похожие ветки 

 
Grol ©   (2005-10-31 23:02) [0]

Не знаю....понятен ли Вам вопрос, но суть следующая: кидаю на форму MEMO1, LISTBOX1, STRINGGRID1 и Button1. В процедуре Button1 пишу следующее:


procedure TForm1.Button1Click(Sender: TObject);
var
  i,j:integer;
begin
Memo1.Clear;
ListBox1.Clear;
for i:=0 to StringGrid1.ColCount-1 do
 for j:=0 to StringGrid1.RowCount-1 do
     StringGrid1.Cells[i,j]:="";
StringGrid1.ColCount:=1;
StringGrid1.RowCount:=1;
end;


Компилирую. Залезаю в диспетчер задач-->смотрю сколько прога занимает в памяти 4МБайт. Потом заполняю MEMO1, LISTBOX1, STRINGGRID1 какими-нибудь данными. Ну и вот заполнил, данными...смотрю через диспетчер задач сколько теперь весит программа в памяти, ага...например 30 МБайт.
Жму на Button1 и снова смотрю в диспетчер задач по прежнему 30МБайт. Так вот вопрос такой, как память, которая была выделенна под определенный компонент, прсто убить...:))
Спасибо заранее за ответы.


 
Eraser ©   (2005-10-31 23:09) [1]


> Grol ©   (31.10.05 23:02)

Попробуй после нажатия Button1, запустить Doom3 потом закрыть его, и глянь сколько будет занимать прога ;-)

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


 
Zeqfreed ©   (2005-10-31 23:15) [2]

Eraser ©   (31.10.05 23:09) [1]
А если у него 1Гб оперативки и отключен своп? :)


 
Eraser ©   (2005-10-31 23:33) [3]


> Zeqfreed ©   (31.10.05 23:15) [2]

А смысл тогда срезать working size? Это только замедлит последующую работу программы, если прийдётся снова заполнять данными эти MEMO1, LISTBOX1, STRINGGRID1.


 
sniknik ©   (2005-10-31 23:42) [4]

> А если у него 1Гб оперативки и отключен своп? :)
тогда пусть в дополнение к думу запустит 1С восьмерку... вот что память жрет, ни одной игрухе и не снилось. ;)

Grol ©   (31.10.05 23:02)
операции с памятью довольно длительны, поэтому и не делаются без необходимости. тем более если ты раз затребовал 30мг, то где гарантия что снова не затребуеш? сразу после освобождения, как раз в тот момент когда система ранее затребованную заберет. и будет она память только туда сюда гонять, выдавать, отбирать, выдавать, отбирать ...  вся только твою прогу обслуживать.

for i:=0 to StringGrid1.ColCount-1 do
for j:=0 to StringGrid1.RowCount-1 do
    StringGrid1.Cells[i,j]:="";
вот это лишнее, пожалуй.

> Так вот вопрос такой, как память, которая была выделенна под определенный компонент, прсто убить...:))
а вот это просто вредное... т.к. даже "убив" компоненты ты не заставиш систему забрать "лишнюю" (как тебе кажется) память выделенную твоей проге.

зато можеш "заставить" другим способом, например нажав на кнопку "свернуть" в правом верхнем углу рядом с крестиком... в принципе тоже самое делается вызовом одной API функции (SetProcessWorkingSetSize) только делать этого не надо...


 
Amoeba ©   (2005-11-01 10:45) [5]


> смотрю через диспетчер задач сколько теперь весит программа
> в памяти, ага...например 30 МБайт.
> Жму на Button1 и снова смотрю в диспетчер задач по прежнему
> 30МБайт. Так вот вопрос такой, как память, которая была
> выделенна под определенный компонент, прсто убить...:))

Незачем смотреть в диспетчер задач. Утечки памяти он не покажет, только с толку собьет. А причину тебе уже объяснили.



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

Форум: "Основная";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.014 c
4-1127551255
Antoha
2005-09-24 12:40
2005.11.27
Как сервисному приложению отловить вход пользователя в систему.


1-1130774220
n0mid
2005-10-31 18:57
2005.11.27
Как можно из двух EXE файлов получить один


14-1130476574
JohnKorsh
2005-10-28 09:16
2005.11.27
Как работать с RxTrayIcon?


2-1131805105
Olga_b
2005-11-12 17:18
2005.11.27
ПРОПИСНЫЕ БУКВЫ!


2-1131459064
dj0n
2005-11-08 17:11
2005.11.27
как сделать чтобы прога т.е. БД шла на всех Ос??





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