Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сколько оперативной памяти использует приложение 
:(
    Опции темы
dimych83
Дата 30.1.2008, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 21.3.2007
Где: Красноярск

Репутация: нет
Всего: нет



Добрый день!

Подскажите пожалуйста, как можно узнать из приложения сколько оперативной памяти оно занимает в текущий момент времени? 

Ситуация такая, что включил в исходник код который создает компоненту и выполняется по таймеру, но из-за невнимательности пропустил одну строчку, которая убивает создаваемую компоненту... потом долго удивлялся почему растет используемая оперативка!  smile Хочу в будующем избежать такой ситуации. Надо чтобы программа в случае чего выдавала предупреждение о превышении заданного порога используемой памяти.

PM MAIL ICQ   Вверх
Exai1e
Дата 30.1.2008, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 2
Всего: 30



smile используй обычный такс манагер, такс инфо smile смориш напротив своего процесса увеличивается ли память ? если да , то есть утечка smile если нет, то оставь на ночь ;) а с утра глянь


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
dimych83
Дата 30.1.2008, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 21.3.2007
Где: Красноярск

Репутация: нет
Всего: нет



Цитата(Exai1e @ 30.1.2008,  08:09)
smile используй обычный такс манагер, такс инфо smile смориш напротив своего процесса увеличивается ли память ? если да , то есть утечка smile если нет, то оставь на ночь ;) а с утра глянь

Ну это понятно... но я же очень просто могу и забыть открыть task manager.  smile 
Программа обновляется периодически, раз в неделю где-то. И каждый раз когда я ее перекомпилирую - забываю о том, что данная проблема когда-то возникла и уже постфактум, через какое-то время, проверяю ее через task manager. А с программой работают круглосуточно операторы. Поэтому есть риск что данная трабла вылезет где-нибудь ночью  smile 
А на основании полученного размера используемой оперативки можно сделать хотя бы анализ прироста памяти, что впринципе позволит в кратчайший срок выявить проблему.

PM MAIL ICQ   Вверх
pukin
Дата 30.1.2008, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 6.9.2007
Где: Россия. Москва/Ко ролёв

Репутация: нет
Всего: нет



DRKB  smile 
PM MAIL   Вверх
dimych83
Дата 31.1.2008, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 21.3.2007
Где: Красноярск

Репутация: нет
Всего: нет



Сделал.
Если кому пригодится - кидаю код:

В ф-цию передается нач. размер выделенной памяти и макс. разница которая может быть между нач. и текущим размером выделенной памяти. И, соответственно, если макс. разница превышена - возвращается "true". А ф-цию вызываю по таймеру, раз в 5 минут.

Код

function MemoryAlert(StartAllocMem: integer; MaxDelta: integer): boolean;
var
  HP: THeapStatus;
  Delta: integer;
begin
  HP := GetHeapStatus;
  Delta := Integer(HP.TotalAllocated) - StartAllocMem;
  if Delta > MaxDelta then
    result := true
  else
    result := false;
end;


И где-нибудь в приложении, когда все компоненты созданы и большого прироста памяти уже не планируется, надо задать нач. размер выделенной памяти:

Код

var
  HP: THeapStatus;
begin
  HP := GetHeapStatus;
  StartMem := Integer(HP.TotalAllocated);



PM MAIL ICQ   Вверх
Insert
Дата 31.1.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: 1
Всего: 1



Есть специальные программы, профилировщики называются,  они и показывают все затраты памяти, утечки и тд, если не ошибаюсь, то даже в Dunit в последней версии ввели возможность смотреть затраты памяти.
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.