![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
требуеться что бы прога выводила объем оперативной памяти которую занимает....
как ее определить... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Можно что-то подобное изобразить:
-------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
shedon , спасибо попробую сейчас
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Скорее интересно не сколько всего памяти размещено, а кто, какими путями и зачем распределил сколько памяти. Еще интересней узнать это без дополнительных программ и удаленно (у программера на компе обычно все и так работает, а у юзера фиг знает где, да еще и бестолкового - скушало 200 мб за 2 дня и не воспроизводится).
решение есть, лежит в области установки хуков и трассировки стеков. Может как-нибудь статью напишу про это. Отправная точка - нужно отслеживать все вызовы VirtualAlloc и VirtualFree и складывать в мап с ключем - стек вызова. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Не совсем ясно, как тогда отслеживать выделение памяти по new/delete, работающие с "кучей" (или по malloc/free). Тем более, что VirtuallAlloc неэффективен с той стороны, что выделяет блоки памяти с размером, кратным размеру страницы памяти (4 Кб). -------------------- ![]() |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
mr.DUDA
Вы абсолютно правы, допустил неточность. Перхватывать нужно HeapAlloc/HeapFree. new реализован через malloc, malloc реализован через HeapAlloc. итд. отслеживать естественно стек вызовов |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
НЕ товарищи вы меня не збивайте
у меня прога выделяет динамически такие объемы памяти что я и счетать не берусь начина от 3 мерных массиво и кончаю уймой объектов вот я нехочу считать а хочу после выделения просто узнать..... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Ну вот код который я привёл выше это и делает. -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
shedon , тебе большая блогодарность
но я еще не нашел место в программе в котором у меня макс памяти, а делать слежение впадло -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
тогда проверяй периодически
-------------------- ![]() |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
mr.DUDA,
у меня задача на графы, размерность бешенные у меня один граф просчитываеться 16 мин, и это время меняеться даже если я лишнюю операцию вставлю, ты представь как оно увеличиться если я переодически проверять буду...... мне нужно найти место где объем памяти максимальный и там взять значения, но при использовании рекурсии это трудновато сделать... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Самый простой способ - это "завернуть" операции выделения и освобождения памяти в свои функции, которые будут увеличивать и уменьшать счётчик, и при каком-то макс. значении что-то делать (хотя как высчитать это макс. значение, а вдруг потом оно ещё раз увеличится
-------------------- ![]() |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
mr.DUDA , гемора много... блин профайл не работает почемуто...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |