Определение используемой памяти

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Определение используемой памяти

Сообщение Tarantul » 08.04.2005 (Пт) 19:26

Можно ли как-то узнать, сколько оперативной памяти занимает работающая VB-программа, если не сумировать размеры всех переменных в ней :?:

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 08.04.2005 (Пт) 20:56

Менедер задач открой и посмотри. Суммированием всех переменных, как ты говоришь, ты результата не добъешься.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 08.04.2005 (Пт) 21:32

А из проги можно?
Если да, то есть интересные идеи...

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 09.04.2005 (Сб) 15:25

Да, мне тоже интересно как это сделать програмно :)

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 09.04.2005 (Сб) 21:23

В винде по моему до 4Гб :D

Столько выделяеться каждому процессу

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 10.04.2005 (Вс) 2:35

2 Tarantul
Программно это делается с помощью API GetProcessMemoryInfo в сочитание с OpenProcess

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 10.04.2005 (Вс) 6:48

Чтобы узнать сколько процесс весит в памяти:
Код: Выделить всё
Declare Function GetProcessWorkingSetSize Lib "kernel32.dll" ( _
    ByVal hProcess As Long, _
    ByRef lpMinimumWorkingSetSize As Long, _
    ByRef lpMaximumWorkingSetSize As Long) As Long
الفيجوال بيسك الرابح

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 10.04.2005 (Вс) 11:26

Понятно

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 11.04.2005 (Пн) 13:51

GM писал(а):Чтобы узнать сколько процесс весит в памяти:
Код: Выделить всё
Declare Function GetProcessWorkingSetSize Lib "kernel32.dll" ( _
    ByVal hProcess As Long, _
    ByRef lpMinimumWorkingSetSize As Long, _
    ByRef lpMaximumWorkingSetSize As Long) As Long
чет нули выдает.... че туда передавать то надо, а то в Api-guide вообще ф-ции нет.... :roll:

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 11.04.2005 (Пн) 14:11

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

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 12.04.2005 (Вт) 7:38

Сорри, вспомнил о WorkingSetSize :oops: , так и скинул.xolod прав. Вообщем вот:
Код: Выделить всё
Type PROCESS_MEMORY_COUNTERS
    cb As Long
    PageFaultCount As Long
    PeakWorkingSetSize As Long
    WorkingSetSize As Long
    QuotaPeakPagedPoolUsage As Long
    QuotaPagedPoolUsage As Long
    QuotaPeakNonPagedPoolUsage As Long
    QuotaNonPagedPoolUsage As Long
    PagefileUsage As Long
    PeakPagefileUsage As Long
End Type
Private Declare Function GetProcessMemoryInfo Lib "PSAPI.DLL" (ByVal hprocess As Long, ppsmemCounters As PROCESS_MEMORY_COUNTERS, ByVal cb As Long) As Long
Function iGetProcessMem(pid As Long) As PROCESS_MEMORY_COUNTERS
Dim hprocess As Long
Dim lRet As Long
Dim pmc As PROCESS_MEMORY_COUNTERS
  hprocess = OpenProcess(PROCESS_QUERY_INFORMATION _
    Or PROCESS_VM_READ, 0&, pid)
pmc.cb = LenB(pmc)

  lRet = GetProcessMemoryInfo(hprocess, pmc, pmc.cb)
  CloseHandle (hprocess)
iGetProcessMem = pmc
End Function

Вырезка из gSysManager. Искать нужно WorkingSetSize :)
الفيجوال بيسك الرابح


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 180

    TopList