Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Пожирание памяти в 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.018 c
15-1256455692
Киря
2009-10-25 10:28
2009.12.27
Треугольник


1-1230616083
Karburator
2008-12-30 08:48
2009.12.27
сложное заглавие таблицы


15-1256320073
POOP
2009-10-23 21:47
2009.12.27
Помогите с Latex


15-1256481374
berlios
2009-10-25 17:36
2009.12.27
Треугольник


2-1257922755
stas
2009-11-11 09:59
2009.12.27
TWEBBrowser скрыть ошибки