Размер памяти, необходимой процессу
От: foka Россия  
Дата: 07.08.05 19:12
Оценка:
Добрый день (ночь)!

У меня вопрос туманный и неконкретный, за что сорри.

Так вот. При запуске приложения, которое весит порядка 30 кБ, т.е. самое обычное приложение, занимаемая им память оказывается целых ~1.2 Мб!

Объясните, кто может, почему это происходит и как этого избежать!
---
С уважением, foka.
Re: Размер памяти, необходимой процессу
От: Александр Сергеевич Россия  
Дата: 07.08.05 23:56
Оценка:
Здравствуйте, foka, Вы писали:

F>Добрый день (ночь)!


F>У меня вопрос туманный и неконкретный, за что сорри.


F>Так вот. При запуске приложения, которое весит порядка 30 кБ, т.е. самое обычное приложение, занимаемая им память оказывается целых ~1.2 Мб!


F>Объясните, кто может, почему это происходит и как этого избежать!

Загружаются используемые твоей программой динамические библиотеки, плюс твоя программа что-то выделяет и т.д. Как избежать исходи из ответа .
/* silent */
Re: Размер памяти, необходимой процессу
От: Anton Batenev Россия https://github.com/abbat
Дата: 08.08.05 04:13
Оценка:
Здравствуйте, foka, Вы писали:

F>У меня вопрос туманный и неконкретный, за что сорри.

F>Так вот. При запуске приложения, которое весит порядка 30 кБ, т.е. самое обычное приложение, занимаемая им память оказывается целых ~1.2 Мб!
F>Объясните, кто может, почему это происходит и как этого избежать!

Если я правильно помню, по умолчанию выделяется 1 MB на стек, например... А еще можно написать приложение, которое будет весить 4 KB и откушать _всю_ вирутальную память
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re: Размер памяти, необходимой процессу
От: shurik.  
Дата: 08.08.05 09:57
Оценка:
Здравствуйте, foka, Вы писали:

F>Добрый день (ночь)!


F>У меня вопрос туманный и неконкретный, за что сорри.


F>Так вот. При запуске приложения, которое весит порядка 30 кБ, т.е. самое обычное приложение, занимаемая им память оказывается целых ~1.2 Мб!


F>Объясните, кто может, почему это происходит и как этого избежать!


Если хочешь маленькую и шуструю прогу под винду, то мождно так сделать
#include <windows.h>

#ifdef NDEBUG
#pragma comment(linker,"/ENTRY:New_WinMain")
#endif

#ifdef NDEBUG
int APIENTRY New_WinMain()
#else
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR szCmdLine, int nShowCmd)
#endif
{
    FreeEnvironmentStrings(GetEnvironmentStrings());
    SetProcessWorkingSetSize(GetCurrentProcess(), -1, -1);

    // ............
    

    return 0;
}


соответсвенно, не будет CRT (включая new и delete)
в итоге имеем: 2Кб екзешник, ~100 кб в памяти.
если заполнить прогу содержимым, то ИМХО 10-15 Кб екзешник, 1-1.5 Мб память.

на мой взгляд — самый простой путь, как существенно уменьнить прогу...
Re[2]: Размер памяти, необходимой процессу
От: garant  
Дата: 08.08.05 10:28
Оценка:
Hi!

> Так вот. При запуске приложения, которое весит порядка 30 кБ, т.е. самое обычное приложение,

> занимаемая им память оказывается целых ~1.2 Мб!
> Объясните, кто может, почему это происходит и как этого избежать!

Настрой правильно размер стека в приложении. По умолчанию у MSVC это, как раз 1Mb, который и живет в твоем адресном пространстве... Остальные 0.2Mb это скорее либо что-то динамическое, что аллоцируется при запуске приложения — скорее всего из RTL или других динамических библиотек...

Кстати, если твое 30Kb приложение использует DLL — то их код (сегмент кода) также в общем случае будет смапирован в твое адресное пространство, что также приведет к его увеличению...

Thanks a lot and best regards.
---
Mickael P. Golovin
Posted via RSDN NNTP Server 1.9
Re: Размер памяти, необходимой процессу
От: foka Россия  
Дата: 08.08.05 19:20
Оценка:
Огромное спасибо всем что откликнулись!

Оказывется есть такие опции линкера:
   /heap:0x40000  (например)
   /stack:0x40000

которые по заверениям микрософт (тм), влияют на выделяемую процессу память. Но как я их ни крутил, программа весит в памяти одинаково, что с ними, что без них... Вот.

Кстати метод
    FreeEnvironmentStrings (GetEnvironmentStrings ());
    SetProcessWorkingSetSize (GetCurrentProcess (), -1, -1);

отлично работает!

зы: А вот программка, которую мучаю: http://eremin.hotbox.ru/files/bin-procexp.zip (~5 кБ), она полна глюков и жуков, но тем не менее..
---
С уважением, foka.
Re[2]: Размер памяти, необходимой процессу
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 09.08.05 00:09
Оценка:
Hello foka, you wrote:

> которые по заверениям микрософт (тм), влияют на выделяемую процессу память. Но как я их ни крутил, программа весит в памяти одинаково


Ну и что, что программа отъела мегабайты ВИРТУАЛЬНОЙ памяти? Сказать про занимаемую физическую память, зная занятый объем виртуальной — невозможно. Эти величини могут как совпадать, так и отличаться на порядки.

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.