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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.006 c
2-1221073858
Alral
2008-09-10 23:10
2008.10.19
TBitmap.Transparent


15-1219815088
Bob
2008-08-27 09:31
2008.10.19
Фокус на АСМе в Дельфи


6-1192515079
Dennis I. Komarov
2007-10-16 10:11
2008.10.19
Для опытного глаза


1-1200714304
Архип
2008-01-19 06:45
2008.10.19
Выборка


3-1208328298
Шмелъ
2008-04-16 10:44
2008.10.19
Траблы с LEFT JOIN





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