Главная страница
    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.47 MB
Время: 0.005 c
15-1220135516
Eraser
2008-08-31 02:31
2008.10.19
Системный микшер и виста + Delphi


2-1221136125
DJones
2008-09-11 16:28
2008.10.19
Использование многострочных hint в Дельфи


15-1219907118
tesseract
2008-08-28 11:05
2008.10.19
Чего-то все про Абрамова забыли


4-1198011534
DevilDevil
2007-12-18 23:58
2008.10.19
Определить путь до файла, имея его Handle


2-1218701003
Нов_и_чок
2008-08-14 12:03
2008.10.19
преобразование длинных имен файлов Windows в DOS





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