![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Название темы не слишком отражает суть и сейчас попробую описать, что я имел ввиду.
В общем есть проект, уже достаточно крупный и у него есть одна проблема - жрёт оперативы немеренно(ну мне лично параллельно с 4Гб, а вот есть юзверя пользователи у которых всего 256Мб, да-да именно столько). При запуске программы в отладчике вижу быстро пробегающие всякие подключения библиотек например, ole.dll(меня особенно радует одна DLL которая имеет имя UNKNOWN_MODULE_3.dll или может быть UNKNOWN_MODULE_8.dll) У меня возникает вопрос а можно ли как-то отследить какие библиотеки подключаются и может попробовать отключить их, если они не используются, такое в принципе возможно? В общем я понимаю что эти библиотеки подключаются компонентами на автомате и отключить их будет весьма сложно, но всё же, может есть способы, а то я уже потерялся как поисковику задать вопрос... -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
"Описание" тоже не слишком отражает суть. Ибо "подключение библиотек" отнюдь не означает "пожирание памяти".
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Отследить какие, и когда подключаются - можно.
Отключить-если подгружается динамически. Но если произойдет вызов функции из выгруженной dll - то все, приехали. Хотя и здесь, кое-что можно придумать. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| MrDmitry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 556 Регистрация: 10.11.2006 Репутация: нет Всего: нет |
Я извиняюсь но если у тебя цепляются такие библиотеки то скорее дело в руках а не в модулях которые что то там подключают и куда то там подключаются. Как ты смог сделать программу если даже не знаешь что у тебя может вызываться и почему? Еще раз извиняюсь, ни чего личного, но думаю для того чтобы тебе дать более менее ясный ответ нужно знать как минимум что за 'уже достаточно крупный' проект. Ну и желательно хоть чуть чуть кода
|
|||
|
||||
| DarkProg |
|
||||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Не вариант. Коммерческая тайна. Я то впринципе могу выложить скажем какую-нить функцию, но смысла в ней не будет, а показывать модуль в 3-4 или даже 5 тысяч строк кода это будет нарушением коммерческой тайны.
Я достоверно знаю ограниченный набор библиотек без которых работать программа не будет и которые я сам подключаю, вопрос в том чтобы отследить то что я сам не подключаю.
Эммм, я конечно спрошу с издёвкой, но вы сами-то знаете все Api функции которые вызываются при открытии скажем формы в программе? Добавлено через 6 минут и 36 секунд Собственно глядя на Messages бегущих при запуске программы вижу вот такую библиотеку HHCTRL.OCX, которая отвечает за работа c CHM, но в программе нет файла справки вообще(до справки руки доходят весьма редко, поэтому нет такого), вот как определить что подключает эту библиотеку и отключить? -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
||||
|
|||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
View/Debug windows/Modules - ставим Break on load для нужных модулей.
Большая часть библиотек подгружается как зависимость других. Часть - как глобальные хуки и расширения проводника. Добавлено через 3 минуты и 16 секунд Вопрос поставлен неверно. Если звёзды зажигают библиотеку загружают - значит, это кому-то нужно. Иными словами, не может быть такого "если они не используются". Они как раз используются. Иначе не загружались бы. И снова вопрос поставлен неверно. Загрузка библиотеки не означает нагрузку на физическую память. Рекомендую: http://www.gunsmoker.ru/2011/04/windows.html http://www.gunsmoker.ru/2011/04/windows-spin-off.html http://www.gunsmoker.ru/2011/06/blog-post.html -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| DarkProg |
|
||||||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Не могу с этим спорить.
Попробовал вижу уже непонятно зачем подключаемую библиотеку TORTOISEOVERLAYS.dll - это от TortoiseSVN. Зачем эта библиотека сдалась в принципе программе, ведь сама же программа не умеет работать с репозиториями и в принципе не работает, хотя черепашку юзаем для обмена проектом?
Почитаю, чуть позже уже вижу, что будет полезно. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
||||||
|
|||||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Прога - гуёвая? Есть диалоги или Shell-контролы? Если есть - значит, надо показывать список папок. Вот тебе и TORTOISEOVERLAYS.dll - она показывает статус папок: лежат они в SVN или нет. Всё понятно. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Да, GUI. Только я полагал, что при открытии файла(когда вызывается диалог открытия или сохранения) используются библиотеки виндоуса и собственно винда должна этим заниматься или я что-то не понимаю? -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Может, как раз, какая то виндовая библиотека тянет ее за собой. А по делу - много в проге создается форм при загрузке? Это сообщение отредактировал(а) superVad - 29.2.2012, 19:35 |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
1 штука - главная. Вдобавок штук 5-8 модулей - без них никак. Да, я тут
почитал, сижу играюсь, нашёл небольшие утечки памяти, но не настолько, чтобы прям критично -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
||||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Ну в общем есть объективный расход памяти(пара модулей будут весьма объёмистыми - один с горой иконок, другой ещё со всякой фигнёй), но мне всё же кажется он должен быть меньше(на порядок меньше). Есть реально классы которые создаются при запуске программы и без них никак совсем. Датасетов две калеки, которые даже в открытом состоянии без параметров больше двух десятков записей не покажут. Самые критичные места уже потестил и там память не теряется, но зато в других местах нашёл где утекает Раз пошла такая пьянка, то у меня такой вопрос, а функция Empty Working Set спасёт отца русской демократии? Я так понимаю что всё, что программе не требуется будет скинуто в файл подкачки на жёсткий диск, так? Это сообщение отредактировал(а) DarkProg - 29.2.2012, 21:54 -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Да, вероятно не понимаешь. Могу посоветоввать Рихтера ("Windows для проффесионалов") или более внимательное изучение вышеуказанного цикла. Если кратко и грубо - пользовательская часть Windows (не ядро) находится в твоей программе. Нет. Она лишь замедлит выполнение твоей программы. Если сильно хочется её всунуть - пиши её сразу перед Application.Run в dpr. Вообще, о чём разговор, когда никаких конкретных цифр не было? Ты приведи значения private bytes, working set и VM size при старте и после некоторой работы - вот тогда предметно можно говорить. А так - в воздухе руками махать. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |