Перейти к содержимому

Фотография

Physical Memory


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 stilet

stilet

    Новый участник

  • Members
  • Pip
  • 23 сообщений


Отправлено 19 октября 2010 - 15:04

Доброго времени суток :)

Собственно вопрос такой: "Как получить значения Total Physical Memory, Available Physical Memory, System Cache и Used Physical Memory?"

Понятно, что можно все эти значения вытягивать из Task Manager'a, но возможно есть более изящное решение? В ТС8 только нашел как вытащить Used Physical Memory через Sys.MemUsage да и то это только процентное значение, а нужно числовое.
  • 0

#2 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 20 октября 2010 - 06:21

Собственно вопрос такой: "Как получить значения Total Physical Memory, Available Physical Memory, System Cache и Used Physical Memory?"


Что-то можно получить через WMI, глянь здесь.
  • 0

#3 Paulitto

Paulitto

    Новый участник

  • Members
  • Pip
  • 39 сообщений

Отправлено 20 октября 2010 - 07:52

Можно еще через ф-ции винапи:

var a = Win32API.MEMORYSTATUS();
Win32API.GlobalMemoryStatus(a);
Log.Message
(
"Total Physical Memory: "+a.dwTotalPhys+" bytes\n"+
"Available: "+a.dwAvailPhys+" bytes\n"+
"In use: "+a.dwMemoryLoad+" %"
)

но именно эта функция не всегда может отрабатывать правильно
см http://msdn.microsof...a366586(v=VS.85).aspx
  • 0

#4 stilet

stilet

    Новый участник

  • Members
  • Pip
  • 23 сообщений


Отправлено 20 октября 2010 - 11:52

Спасибо Paulitto и AlexP за ответы, вроде как разобрался :)
  • 0

#5 Rebz

Rebz

    Опытный участник

  • Members
  • PipPipPipPip
  • 471 сообщений


Отправлено 15 декабря 2010 - 11:06

Хотелось бы апнуть темку.
VBS, TC 8.10
Мне нужно знать как меняется Physical Memory (в Task Manager).
Я выполняю такой вот нехитрый скрипт:

Set a = Win32API.MEMORYSTATUS
Win32API.GlobalMemoryStatus(a)
Log.Message("Bytes of physical memory: "&a.dwTotalPhys)
В логе вижу след.запись: Bytes of physical memory: 2147483647
Перевожу биты в Гб, получается 1.9. А в Task Manager показывается 2.21 Гб. Почему так получается?
Прикладываю скрин,где выделяю какое значение я бы хотел получить:
Прикрепленный файл  taskmsg.JPG   48,23К   17 Количество загрузок:

PS Переводил байты в гигабайты при помощи http://convertr.ru/i...s_to_gibibytes/ .

Или есть способ покруче измерять память (не в процентах)?
  • 0

#6 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 15 декабря 2010 - 12:13

В логе вижу след.запись: Bytes of physical memory: 2147483647
Перевожу биты в Гб, получается 1.9. А в Task Manager показывается 2.21 Гб. Почему так получается?

Потому что то, что у вас на картинке обведено - это не physical memory, а page file usage. :smile:
  • 0

#7 Rebz

Rebz

    Опытный участник

  • Members
  • PipPipPipPip
  • 471 сообщений


Отправлено 15 декабря 2010 - 12:38

В логе вижу след.запись: Bytes of physical memory: 2147483647
Перевожу биты в Гб, получается 1.9. А в Task Manager показывается 2.21 Гб. Почему так получается?

Потому что то, что у вас на картинке обведено - это не physical memory, а page file usage. :smile:

О как! А кто-нибудь может подсказать, можно ли по PF usage оценивать утечку памяти? Или как это грамотней делать?
  • 0

#8 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 16 декабря 2010 - 09:19

Здравствуйте.

Грамотнее всего использовать профайлер (например AQtime), а не средство для автоматизированного тестирования.

Если хочется просто оценить динамику роста потребления памяти, отслеживайте у процесса тестируемого приложения значение свойства VMSize (Sys.Process("MyApp").VMSize). Можете на каждой итерации теста или по таймеру сбрасывать значение этого свойства в csv файлик, а потом руками открыть его в Excel и построить красивый график. Я так и делаю, когда возникает подобная задача.
  • 0
С уважением,
Дмитрий

#9 Rebz

Rebz

    Опытный участник

  • Members
  • PipPipPipPip
  • 471 сообщений


Отправлено 17 декабря 2010 - 09:55

Здравствуйте.

Грамотнее всего использовать профайлер (например AQtime), а не средство для автоматизированного тестирования.

Если хочется просто оценить динамику роста потребления памяти, отслеживайте у процесса тестируемого приложения значение свойства VMSize (Sys.Process("MyApp").VMSize). Можете на каждой итерации теста или по таймеру сбрасывать значение этого свойства в csv файлик, а потом руками открыть его в Excel и построить красивый график. Я так и делаю, когда возникает подобная задача.

Дмитрий, спасибо, тоже вариант!
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных