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

Вниз

Размер выделенной памяти для массива   Найти похожие ветки 

 
VladSel   (2008-01-21 07:15) [0]

Здравствуйте
Вопрос простой: создаю массив с большим числом элементов и смотрю (в диспетчере задач) как меняется объём памяти занимаемой программой

procedure TForm1.Button1Click(Sender: TObject);
var len:integer;
 int_arr:array of integer;
 ext_add:array of extended;
 byte_arr:array of byte;
begin
 //Размер массива
 len:=10000000;
 //Integer SizeOf(Integer)=4 - размер с одной переменной
 //Память
 //Память + Виртуальная память = Всего
 //3432+660=4092 Кб
 //Выделяю память
 SetLength(int_arr,len);
 //Память
 //Память + Виртуальная память = Всего
 //42576+39772=82348 Кб
 //АНАЛИЗИРУЕМ
 //82348 - 4092 = 78256 Кб - Выделено на массив с данными (Integer)
 //78256 / 10000000 = 8,0134144 байт на одну запись
 // РАЗМЕР С ДАННЫМИ ЗАНИМАЕТ В 2 РАЗА БОЛЬШЕ МЕСТА ЧЕМ ДОЛЖНО БЫТЬ ??????????
 //Очистили
 SetLength(int_arr,0);

 //extended SizeOf(extended)=10 - размер с одной переменной
 //Память
 //Память + Виртуальная память = Всего
 //3468+660=4128 Кб
 //Выделяю память
 SetLength(ext_add,len);
 //Память
 //Память + Виртуальная память = Всего
 //101288+98420=199708 Кб
 //АНАЛИЗИРУЕМ
 //199708 - 4128 = 195580 Кб - Выделено на массив с данными (extended)
 //195580 / 10000000 = 20,027392 байт на одну запись
 // РАЗМЕР С ДАННЫМИ ЗАНИМАЕТ В 2 РАЗА БОЛЬШЕ МЕСТА ЧЕМ ДОЛЖНО БЫТЬ ??????????
 //Очистили
 SetLength(ext_add,0);

 //byte SizeOf(byte)=1 - размер с одной переменной
 //Память
 //Память + Виртуальная память = Всего
 //3528+660=4188 Кб
 //Выделяю память
 SetLength(byte_arr,len);
 //Память
 //Память + Виртуальная память = Всего
 //13312+10448=23760 Кб
 //АНАЛИЗИРУЕМ
 //23760 - 4188 = 19572 Кб - Выделено на массив с данными (extended)
 //19572 / 10000000 = 2,0041728 байт на одну запись
 // РАЗМЕР С ДАННЫМИ ЗАНИМАЕТ В 2 РАЗА БОЛЬШЕ МЕСТА ЧЕМ ДОЛЖНО БЫТЬ ??????????
 //Очистили
 SetLength(byte_arr,0);

end;

подскажите где я ошибаюсь


 
Loginov Dmitry ©   (2008-01-21 08:02) [1]

> подскажите где я ошибаюсь



> SetLength(int_arr,len);
> //Память
> //Память + Виртуальная память = Всего
> //42576+39772=82348 Кб


Виртуальная память - это вся память, выделенная процессу. Она складывается из физической памяти (ОЗУ) + памяти, сброшенной в файл подкачки. То, что 42576+39772=82348 - это неверно. На самом деле общее потребление составляет 39772. А то, что потребление физической памяти оказалось больше, чем потребление виртуальной - так просто диспетчер задач высчитывает, не верь ему! :)


 
Leonid Troyanovsky ©   (2008-01-21 13:41) [2]


> VladSel   (21.01.08 07:15)  

> и смотрю (в диспетчере задач) как меняется объём памяти

Perfmon.exe forever.

--
Regards, LVT.


 
homm ©   (2008-01-21 13:54) [3]

> [0] VladSel   (21.01.08 07:15)
> смотрю (в диспетчере задач) как меняется объём памяти занимаемой
> программой

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


> //Память + Виртуальная память = Всего

Память + Виртуальная память <> Всего
 Это ты сам выдумал.
Виртуальная память = Всего
 Вот так верно.» Юрий Зотов:» Пожалуйста, повежливее. Не заставляйте принимать меры, это никому не нужно.


 
KSergey ©   (2008-01-21 14:31) [4]

> homm ©   (21.01.08 13:54) [3]
> Ты сначала смотрелку отрасти

А толстой писькой не надоело трясти из ветки в ветку?


 
homm ©   (2008-01-21 15:02) [5]

> [4] KSergey ©   (21.01.08 14:31)
> А толстой писькой не надоело трясти из ветки в ветку?

Меня в детстве били, теперь я злой на весь мир.


 
clickmaker ©   (2008-01-21 15:06) [6]


> Меня в детстве били

трудное децтво, деревянные игрушки, прибитые к потолку? )


 
homm ©   (2008-01-21 15:08) [7]

> [6] clickmaker ©   (21.01.08 15:06)
> деревянные игрушки, прибитые к потолку? )

Хуже, к потолку :)


 
homm ©   (2008-01-21 15:10) [8]

> [6] clickmaker ©   (21.01.08 15:06)

Блин, прочитал по привычке «к полу» :)


 
MetalFan ©   (2008-01-21 16:38) [9]

тогда уж сразу чугунные и к потолку)


 
Anatoly Podgoretsky ©   (2008-01-21 18:37) [10]

> homm  (21.01.2008 15:02:05)  [5]

Мужик меняет колесо в пустыне, тут подлетает фея и говорит -
Хочешь потрахаться?
Мужик конечно
Фея пшик, пшик, пшик по все колесам.

А ты хочешь потрахаться, устроим.


 
homm ©   (2008-01-21 20:33) [11]

> [10] Anatoly Podgoretsky ©   (21.01.08 18:37)

Очень познавательно.



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
1-1200878862
IGray
2008-01-21 04:27
2008.10.19
Как создать в цикле Array Of Const?


9-1173732968
Mr.Vlad
2007-03-12 23:56
2008.10.19
3ds max


2-1221127435
mefodiy
2008-09-11 14:03
2008.10.19
Черно-белая печать на цветном принтере


15-1219920689
Tricky
2008-08-28 14:51
2008.10.19
Todo List не работает в D7


2-1221159246
programmer90
2008-09-11 22:54
2008.10.19
Переменные среды в Delphi