Утечка памяти в WM5/6 и WM_HIBERNATE. Нужна помощь



Реп: (3)
Добрый день, ув. программеры.

Всем известна беда коммуникаторов на базе WM5/6. Утечка памяти.
Беда проявляется, как шмотки прог по 300-400кБ, которые валяются в памяти без дела и рано или поздно приводящие к тому, что свободной РАМы остается мало даже для простейших действий, не говоря уже о всяких навигациях. :(
Хорошо, если у коммуникатора 128Мб ОЗУ, но намного чаще бывает всего 64Мб, а ее забить в течении дня, трех легче легкого. Да и 128Мб когда-то кончаются.
Методов борьбы с этой проблемой было выдумано немало. И смена прошивки и разные проги..... Прошивок я переменял за последний месяц штук двадцать, не меньше. И всегда была утечка памята. Больше или меньше, но была.
С прогами же тоже все забавно. Есть программака от SKTools, которая "чистит" память, но в результате этой чистки она срубает практически все, даже нужные приложения. И есть программка от oxios.com, которая посылает WM_HIBERNATE сообщение, позволяя довольно шустро удалить мусор из памяти. Единственный минус этой программы в том, что она выбрасывает pop-up окошко, то есть в шедуллер ее не загонишь. :(
Автор программы прямо пишет, что окошко убирать не собирается, что легко объяснимо, так как прога фришная.

Вот у меня и родилась шальная мысль. Может кто-нибудь напишет программку, которая будет сидеть резидентом в памяти и посылать WM_HIBERNATE сигнал раз, например, в час. Без окошек, без сообщений. Просто висеть и работать.

Сам я не программист и может что-то не так понял, так что прошу вашей коллективной помощи. Но знаю наверняка, что человеку, который напишет такую прогу все владельцы смартфонов на базе ВинМобайл поставят памятник еще при жизни, а памятник это весьма неплохая реклама. :victory:



Реп: (671)
а ты уверен, что это реально спасет дело?
просто WM_HIBERNATE обрабатывается приложением и это дело приложения делать что-то или нет.
другими словами это сообщение носит характер оповещения.
90% приложений не обрабатывают это сообщение.
под крайний случай приложение просто закроют при нехватке памяти.



Реп: (3)
GreateVK,02.01.08 18:47:08
а ты уверен, что это реально спасет дело?
просто WM_HIBERNATE обрабатывается приложением и это дело приложения делать что-то или нет.
другими словами это сообщение носит характер оповещения.
90% приложений не обрабатывают это сообщение.
под крайний случай приложение просто закроют при нехватке памяти.

Вот она, прога http://oxios.com/memory/
Я могу только опираться на слова автора
----
WM_HIBERNATE is a window message that is generated by the Windows operating system and sent to an application when system resources are running low. All applications should get the message and handle it by attempting to release as many resources as possible by unloading processes, destroying windows, or freeing up as much local storage as possible without damaging the internal state of the system.
Oxios Hibernate sends WM_HIBERNATE to all applications.
----

Может он что и умалчивает, но польза на лицо. Четко вычищает мусор после всяких автивсинхов и прочих мутотеней.
А то что 9/10 плюют на это сообщение даже хорошо. Не закрываются нужные проги.



Реп: (70)
WM_HIBERNATE по-моему посылается и еще когда питание выключаешь (Power OFF), а потом WM_ACTIVATE, когда включаешь.. толку действительно будет мало.. могу написать прогу.. минута на это уйдет всего-лишь... но толку от нее будет ноль.. видимо автор утали что-то.. А прога моя вот тут: http://files.unn.ru/5482876003



Реп: (105)
если уж так нравится/устраивает эта Oxios Hibernate, может просто её пропатчить, чтобы не выдавала MessageBox?

з.ы. подскажите, люди добрые, куда, из-за чего и почему эта самая "Всем известна беда коммуникаторов на базе WM5/6. Утечка памяти."? просто вроде на WM нет свопа, и "утёкшие" страницы некуда выгружать. а если софтина знает об выделенном участке памяти и сумеет его освободить по WM_HIBERNATE, то это вроде и не утечка даже.



Реп: (10)
Аналогичная функция есть в MemMaid (разраб DinarSoft). Там просто есть специальный ярлык на быструю очистку рама. В самой проге можно настроить эту очистку. Окошко - оповещение выскакивает, но в нём можно поставить галку "не отображать это окно". У меня цель ярлыка выглядит так: ""\Storage Card\Program Files\MemMaid\MemMaid.exe" -Free" Если её поставить и сделать шедулер, который будет запускать это раз в полчаса, чвсё должно работать.



Реп: (101)
По идее, по завершении процесса вся выделенная память должна освободиться. Почему этого не происходит, мне не вполне ясно.



Реп: (671)
нет, WM_HIBERNATE не посылается при выключении питания.

По идее, по завершении процесса вся выделенная память должна освободиться. Почему этого не происходит, мне не вполне ясно.

утечка может быть в драйверах.

в принципе возможно что одно из системных окон получает сообщение и обрабатывает его..

вот, попробуйте мою прогу.
сообщите насколько хорошо она чистит память :lol:

Прикрепленные файлы

Прикрепленный файлclearmem.exe ( 17.37 КБ )



Реп: (64)
GreateVK, помнится куда то я уже выкладывал прогу которая шлёт WM_HIBERNATE,но вот проблемма-чистит она память хреново,в основном проги или не утруждают себя обработкой этого сообщения или же высвобождают кеш



Реп: (671)
GreateVK, помнится куда то я уже выкладывал прогу которая шлёт WM_HIBERNATE,но вот проблемма-чистит она память хреново,в основном проги или не утруждают себя обработкой этого сообщения или же высвобождают кешp

а я нигде и не написал, что моя прога посылает WM_HIBERNATE...



Реп: (70)
прога GreateVK, вызывает ForcePageout . В жизни бы не подумал что в кпк есть такое :)



Реп: (134)
конкретно на таче .... есть 1 мега прога ..которая во первых дохрена весит во вторых течет .... имя ей TOCH интерфейс



Реп: (587)
В теме про oxios hybernate есть версия без выскакивающего окошка, освобождает память как и сктулз, весит 5кб.

Сообщение отредактировал dboriss - 03.01.08, 17:00



Реп: (134)
парни ..не парьтесь .. убейте biotoch и получите дохрена памяти сверху .... и практически полное отстствие утечек



Реп: (3)
Парни (и девушки, разумеется) я в восторге, правда. :victory:
Хоть где-то нашел грамотных и толковых ребят разбирающихся не только в "темах тудея", но и во внутренностях КПК.
Обещаю честно оттестить все приведеные выше решения и сообщить результат сюда же, вдруг кому пригодится. :wink_kind:



Реп: (3)
mo3ulla,03.01.08 06:53:14
парни ..не парьтесь .. убейте biotoch и получите дохрена памяти сверху .... и практически полное отстствие утечек

У начальника GlowFish X800, разумеется, никаких HTC интерфейсов на ней не висит (хотя есть Spb Shell, который тоже жрет память) и утечки такие же сильные, даже сильнее. Он вообще раз в день СР делает.
Проблема где-то глубже..... Вопрос только где, так как о подобном поведении WM6 писали и на зарубежных форумах.
На LOOX720 с WM2003 я делал ресет раз в год, на Таче с WM6 раз в неделю. :(



Реп: (134)
Henry_Lee @ 03.01.08 18:58:49
GlowFish X800



ну у етого есть 2 причины

1 кривость spb софта .. который я бы лично даж с фриварной лицензией юзать не сталл бы
2. кривость рук инженеров етена
3. не любовь етена к новым билдам осей ..

посмари в start-setting-system-about че написано ?



Реп: (3)
mo3ulla @ 03.01.08 09:03:53
Henry_Lee,03.01.08 18:58:49
GlowFish X800


ну у етого есть 2 причины

1 кривость spb софта .. который я бы лично даж с фриварной лицензией юзать не сталл бы
2. кривость рук инженеров етена
3. не любовь етена к новым билдам осей ..

посмари в start-setting-system-about че написано ?

К сожалению, не могу посмотреть. У меня Тач.
А с остальным соглашусь, но под такие натяжки можно договориться до того, что проще выкинуть все коммуникаторы и вернуться к обычным сотовым телефонам. Причем с монохромным дисплеем и Нокиа. :)
Идея как раз в том, чтобы разобраться куда уходит память с тем набором софта, который хочется использовать.

Например, у меня на WM2003 стоит и Spb и куча других прог, делаю СР раз в год и то потому что сам девайс бывает зависает при работе с GPS. На Таче только самое необходимое с минимальными работающими заморочками. После СР памяти около 22мб, через день уже 17, через два 15. А это уже край для того же iGO. :(

Можно, разумеется, купить Тач с 128мб ОЗУ, но во первых жаль денег переплачивать за чендж, а во вторых все-равно проблема то останется.



Реп: (247)
Henry_Lee,
проблема существует, но предложенные методы уж очень радикальны...
логичнее юзать софт, чистящий память, например, sktools



Реп: (671)
логичнее юзать софт, чистящий память, например, sktools

ацтой этот sktools.
невозможно сделать 100% корректную очистку памяти.

Henry_Lee, попробуй проследить какой процесс пожирает память.
отпишись тут. а потом уже думать можно.


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 09:06