Передо мной стоит задача по определению памяти, которая выделяется под окна приложения.
Возможно ли каким-то образом по дескриптору (HWND) или иным способ получить необходимое значение.
Речь идет о так называемой commited памяти. Т.е памяти которая непосредственно выделенна на окно.
НУ неужели никто не знает????
Мне над по дискриптору окна узнать сколько весит окно сколько под него выделяется реальной оперативной памяти.
Пожалуйста выскажите свои предположения и идеи может че прокатит ))))
Спасибо!!
Здравствуйте, Mozzart, Вы писали:
M>НУ неужели никто не знает???? M>Мне над по дискриптору окна узнать сколько весит окно сколько под него выделяется реальной оперативной памяти. M>Пожалуйста выскажите свои предположения и идеи может че прокатит )))) M>Спасибо!!
Хм, в первый раз вижу такую потребность, и даже не знаю решаемо ли это простым путем (скорее всего нет).
Что творим то?
Здравствуйте, Danchik, Вы писали:
D>Здравствуйте, Mozzart, Вы писали:
M>>НУ неужели никто не знает???? M>>Мне над по дискриптору окна узнать сколько весит окно сколько под него выделяется реальной оперативной памяти. M>>Пожалуйста выскажите свои предположения и идеи может че прокатит )))) M>>Спасибо!!
D>Хм, в первый раз вижу такую потребность, и даже не знаю решаемо ли это простым путем (скорее всего нет). D>Что творим то?
Планируется произвести оптимизацию программного продукта!
Для этого мне была поставленная задача подсчитать сколько весит каждый класс в программе (sizeof всех элементов каждого класса)!!!
— нервная монотонная работа не приносящая удовольствия )))))
В процессе подсчета непонятно под что делось N-ое количество метров (судя по ProcessExplorer-у).
Вот тут общество задалось вопросом а сколько ж весит само окошко и немедленно была поставленна задача это дело определить!
Имеется ввиду что все элементы этого класса подсчитаны а вот что винда выделяет под окно — не известно!
Я тут залез в недокументированные функции WinNT/2000 что лежат в ntdll.dll — там тоже ничего не нашел(или криво искал ))))!!!
Так что буду благодарен за любую информацию и мнение по этому поводу!!! Сойдут даже собалезнования ))))!!!!
M>Для этого мне была поставленная задача подсчитать сколько весит каждый класс в программе (sizeof всех элементов каждого класса)!!!
Бред.
M>В процессе подсчета непонятно под что делось N-ое количество метров (судя по ProcessExplorer-у).
Как это под что? Под процесс!
M>Вот тут общество задалось вопросом а сколько ж весит само окошко и немедленно была поставленна задача это дело определить!
Само окошко весит копейки.
M>Имеется ввиду что все элементы этого класса подсчитаны а вот что винда выделяет под окно — не известно!
Как это что? Память!
M>Я тут залез в недокументированные функции WinNT/2000 что лежат в ntdll.dll — там тоже ничего не нашел(или криво искал ))))!!!
А вот туда лазить не стоит.
M>Так что буду благодарен за любую информацию и мнение по этому поводу!!! Сойдут даже собалезнования ))))!!!!
Здравствуйте, Аноним, Вы писали:
M>>Для этого мне была поставленная задача подсчитать сколько весит каждый класс в программе (sizeof всех элементов каждого класса)!!!
А>Бред.
Возможно, но работу необходимо сделать!!!
M>>В процессе подсчета непонятно под что делось N-ое количество метров (судя по ProcessExplorer-у).
А>Как это под что? Под процесс!
Разъясните пожалуйста что Вы имели ввиду.
Я имел ввиду commited memory. Т.е ту память которая выделяется так сказать реально, а не резервируется там что ли. Может я че не так понимаю так вы уж разъясните пожалуйста.
M>>Вот тут общество задалось вопросом а сколько ж весит само окошко и немедленно была поставленна задача это дело определить!
А>Само окошко весит копейки.
Копейка — рубль бережет!!
M>>Имеется ввиду что все элементы этого класса подсчитаны а вот что винда выделяет под окно — не известно!
А>Как это что? Память!
Ну тут Вы меня немного не поняли — я и имел ввиду память. Ну или вы хотели немного поддернуть.
M>>Я тут залез в недокументированные функции WinNT/2000 что лежат в ntdll.dll — там тоже ничего не нашел(или криво искал ))))!!!
А>А вот туда лазить не стоит.
Не стоит но когда никто конкретно сказать не хочет а тока говорит а том что это бред и что такой фигней никто не занимаются — залезешь куда угодно!!!
M>>Так что буду благодарен за любую информацию и мнение по этому поводу!!! Сойдут даже соболезнования ))))!!!!
А>Чтобы указать системе освободить неиспользуемую память процесса, можно вызвать функцию SetProcessWorkingSetSize() или SetProcessWorkingSetSizeEx() с соответствующими параметрами.
Тут вопрос Вы хотите сказать что "пропавшая" память это память которую винда выдилила (зарезервировала) под процесс. И что к реальному весу программы это не имеет никакого отношения ????
Здравствуйте, Mozzart, Вы писали:
M>Доброго времени суток!
M>Передо мной стоит задача по определению памяти, которая выделяется под окна приложения. M>Возможно ли каким-то образом по дескриптору (HWND) или иным способ получить необходимое значение. M>Речь идет о так называемой commited памяти. Т.е памяти которая непосредственно выделенна на окно.
M>Спасибо всем откликнувшимся!!!
Process Explorer не учитывает в commited скока памяти уходит на окна процесса. Хотя бы потому что эта память выделяется не в пространстве процесса, а в пространстве ядра. Далее — на оконные объекты в пределах одного десктопа драйвер win32 подсистемы win32k.sys ХРшки выделяет хип с лимитом 32мб. Но сколько его заюзано вы не увидите Process Explorer'ом как я уже писал. То что вы видите в commited Process Explorer'а это не только сумма sizeof'ов всего что есть в программе. Во первых обычный free совсем не обяхательно возвратит память из кучи в ОС, а очень даже часто оставляет на будушее. Во вторых кроме вас в вашем процессе работает еще туева хуча системных и 3rd party DLL которые тоже юзают память. В третьих хватит маяться куйней и возьмите в руки профайлер/мемори трекер.
Re: Память выделяемая под окно. Ее размер ?
От:
Аноним
Дата:
26.09.07 12:57
Оценка:
Исходя из вышесказанного — вытекает нижеследующее.
Спасибо всем за ответы!
Буду думать. Вопрос с меня не снят.(((
Спасибо что нашли время на ответы.