Форум: "Прочее";
Текущий архив: 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