Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Вниз

Пожирание памяти в Windows7 x64.   Найти похожие ветки 

 
MonoLife ©   (2009-10-28 17:17) [0]

Вот пишу себе помаленьку, для души, 2D игрушку в win. XP, как бы, проблем особых не испытываю.. Запустил диспетчер процессов, смотрю кушает ex"шник ~9700 kb. Даже если начать активно использовать программу, память максимум увеличивается временно ~ на 100 kb..
Оказался по рукой Windows Seven 64-разрядная, запускаю игру, в процессах - кошмар. Наростание используемой оперативной памяти по 100-200 kb ежесекундно.. достигла 57 метров, вырубил программу..
В этот момент в программе происходит следующее: в памяти "висят" несколько статичных одно- и двумерных массива, десяток переменных типа word, integer. Констант десяток-другой таких же типов... Несколько packed рекордов и статичных массивов из них.. Из постоянных процессов: в стартовом окне 800х600 рендерится картинка того же размера и несколько графических кнопок из image контейнера (использую asphyre). В таймере переменной типа integer, "делается" inc() или dec().
Всё, вроде...
Кто может поделиться идеями и знаниями по поводу утечки оперативы в windows 7 x64, буду признателен..


 
MonoLife ©   (2009-10-29 10:40) [1]

Прошу прощения за назойливость, но может, всё же, кто-нить подскажет почему в 32-х разрядной win XP не происходит прирост используемой опер. памяти, а в x64 win7 наблюдается это?


 
brother ©   (2009-10-29 10:42) [2]

утечки в программе... рой код...


 
clickmaker ©   (2009-10-29 11:07) [3]

MemProof попробуй


 
@!!ex ©   (2009-10-29 11:13) [4]

> [2] brother ©   (29.10.09 10:42)

Как поведение утечек может зависеть от ОС?


 
brother ©   (2009-10-29 11:16) [5]

> зависеть от ОС?

не от нее а от разрядности...


 
@!!ex ©   (2009-10-29 11:24) [6]

> [5] brother ©   (29.10.09 11:16)

Так вроде 32 битные приложения под 64 битной ОС выполняются в эмуляторе?
Чето я не понимаю. :(


 
MonoLife ©   (2009-10-29 11:56) [7]


> brother ©   (29.10.09 10:42) [2]

Думаю, если бы утечки были в программе, то и на 32-х разр. это как-нить проявлялось..

> не от нее а от разрядности...
это уже интересно.. каким образом это происходит и как от этого защититься?


 
Демо ©   (2009-10-29 13:50) [8]


> это уже интересно.. каким образом это происходит и как от
> этого защититься?


Правильно написать программу?
У меня на W7 x64 нет такой проблемы, хотя программы на Delphi пишу...


 
Rouse_ ©   (2009-10-29 14:39) [9]

Ты проверь погоняв программу подольше. Я не уверен, но вдруг это штатный механизм кэширования памяти в эмуляторе работает таким образом? Если это так, то в какой-то момент прирост должен остановиться.


 
MonoLife ©   (2009-10-29 15:20) [10]


> Демо ©   (29.10.09 13:50) [8]
>
> Правильно написать программу?

Я ведь не зря в первом посте описал процессы..
У меня там всё прозрачно.. Если грешить на программу, то, тогда уж, на "асфирь", но в генофонд его модулей я глубоко не лазил)


> Rouse_ ©   (29.10.09 14:39) [9]

Да, как только снова доберусь до того двухядерника с 4 Gb ОЗУ и win.7.. Погоняю..

> clickmaker ©   (29.10.09 11:07) [3]

Ни разу не пробовал MemProof.. Однако надо, спасибо за совет..
Хотя, уверен, что в моем коде динамической, по крайней мере, утечки памяти не должно быть


 
Anatoly Podgoretsky ©   (2009-10-29 15:27) [11]

> MonoLife  (29.10.2009 15:20:10)  [10]

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

Короче надо профилировать и MemProof вполне нормальный инструмент для этого.


 
MonoLife ©   (2009-10-29 15:38) [12]


> надо профилировать

Это что значит?


 
Anatoly Podgoretsky ©   (2009-10-29 15:41) [13]

Снять профиль приложения, как оно использует память.


 
MonoLife ©   (2009-10-29 15:54) [14]


> Anatoly Podgoretsky ©   (29.10.09 15:41) [13]

Не скажу, что стало совсем понятно, но надеюсь, разберусь с MemProof и пойму...
Кстати, вот добрался я до той машины.. оказалось вообще более странно:
Развернутое окно программы сожрало 31 метр и, вроде, прекратило.. Но стоило его свернуть на панель задач, как пожирание памяти стремительно полезло вверх:(
На машине с XP наоборот, память освободилась до 930 Kb и застыло в этом положении до следующего restore окна..


 
Anatoly Podgoretsky ©   (2009-10-29 16:04) [15]

> MonoLife  (29.10.2009 15:54:14)  [14]

Да не важно если не понял, это не страшно. Просто так называется метод поиска узких мест. И инструменты часто называются профайлеры.

У тебя полезло выделяться видимо использование физической памяти, а образать внимание нужно на виртуальную память, именно с ней работает пользовательская программа, а в физическую память кладутся только страницы памяти и без разницы сколько времени они там будут лежать, они ничего не значат.


 
Демо ©   (2009-10-29 16:05) [16]


> MonoLife ©


Напиши тестовый пример с хорошим циклом выделения/освоюбождения памяти и проверь все предположения...


 
Anatoly Podgoretsky ©   (2009-10-29 16:15) [17]

> Демо  (29.10.2009 16:05:16)  [16]

Два примера, с обычным выделением и с нарастающим выделением, когда каждый раз запрашивается все больше и больше.


 
MonoLife ©   (2009-10-29 16:22) [18]

ребят, мож, кто ссыль даст на memproof, не могу что-то найти:(


 
Кто б сомневался ©   (2009-10-29 16:30) [19]

Ты смотри на виртуальную память, добавь в диспетчер колонку виртуальной памяти.


 
MonoLife ©   (2009-10-29 16:35) [20]


> Кто б сомневался ©   (29.10.09 16:30) [19]

В XP такая колонка есть?


 
Anatoly Podgoretsky ©   (2009-10-29 16:44) [21]

Может достаточно FastMM

> В XP такая колонка есть?

Есть, надо только руками включить.


 
MonoLife ©   (2009-10-29 17:01) [22]

Взял приложение ProcessExplorer. В колонке Virtual Size (это оно?) прироста нет..

> Anatoly Podgoretsky ©   (29.10.09 16:44) [21]

> Есть, надо только руками включить.

Я что-то совсем нюх потерял:(
WinXP SP3: Диспетчер задач Windows->Вид->Выбрать столбцы и хочу найти там "виртуальную память", но не нахожу:(


 
Омлет ©   (2009-10-29 18:05) [23]

> [22] MonoLife ©   (29.10.09 17:01)

Называется "Объем виртуальной памяти".


 
Anatoly Podgoretsky ©   (2009-10-29 22:56) [24]

> MonoLife  (29.10.2009 17:01:22)  [22]

У меня есть, называется Virtual Memory Size,  а как это переведено на русский не знаю, под рукой только Виста, а там с названиями можно голову сломать.


 
MonoLife ©   (2009-10-30 03:21) [25]


> Омлет ©   (29.10.09 18:05) [23]

благодарю, нашел! Утро вечера мудренее..
Задействованная виртуальная память строго стоит на одном значении, при работе моего приложения не меняется..

В общем, всем спасибо.. Попробую заюзать FastMM... А там посмотрим "ху-из-ху"...



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.038 c
15-1256679012
Юрий
2009-10-28 00:30
2009.12.27
С днем рождения ! 28 октября 2009 среда


2-1256271770
Delphi2020
2009-10-23 08:22
2009.12.27
Проблема с сохранением Raw в exe


15-1256739460
MonoLife
2009-10-28 17:17
2009.12.27
Пожирание памяти в Windows7 x64.


1-1230135789
du_hast
2008-12-24 19:23
2009.12.27
Нужно получить кол-во Chart-ов в текущем Excel Sheet-е


15-1256634915
{RASkov}
2009-10-27 12:15
2009.12.27
О вирусе...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский