Для тех, кто не знает, как использовать PDO (исходя из функций В основном читайте mysql_
), я сделал очень, очень простую PDO-обертку , которая представляет собой один файл. Он существует, чтобы показать, насколько легко выполнять все обычные приложения, которые необходимо выполнить. Работает с PostgreSQL, MySQL и SQLite.
Мне нужен один столбец
$count = DB::column('SELECT COUNT(*) FROM `user`);
Мне нужны результаты массива (key => value) (т. е. для создания selectbox)
$pairs = DB::pairs('SELECT `id`, `username` FROM `user`);
Мне нужен результат одной строки
$user = DB::row('SELECT * FROM `user` WHERE `id` = ?', array($user_id));
Мне нужен массив результатов
$banned_users = DB::fetch('SELECT * FROM `user` WHERE `banned` = ?', array(TRUE));
Вы могли использовать профилировщика памяти как
Профилировщик Памяти.NET ( http://memprofiler.com/ )
или
(свободный) Профилировщик CLR ( http://clrprofiler.codeplex.com/ )
Эти профилировщик памяти МУРАВЬЕВ скажет Вам точно, сколько выделяется для каждого объекта/метода/и т.д.
Вот связанное сообщение , где мы обсудили определение размера ссылочных типов.
Для получения общего смысла для выделения памяти в приложении используйте следующую команду SOS в Примечании WinDbg
!dumpheap -stat
это! dumpheap только дает Вам байты самого типа объекта и не включает байты никаких других типов объектов, на которые это могло бы сослаться.
, Если Вы хотите видеть общие сохраненные байты (суммируют все байты всех объектов, на которые ссылается Ваш объект) типа конкретного объекта, используйте профилировщика памяти как точечная Трассировка - http://www.jetbrains.com/profiler/
Каждый "класс" требует, чтобы достаточно памяти содержало весь, его - скомпилированный код монеты в пять центов для всего, что это - участники, которых позвонило время выполнения, (хотя, если Вы надеваете; t называют метод в течение достаточно долгого времени, CLR может освободить ту память и перемонету в пять центов он снова, если Вы называете его снова... плюс достаточно памяти для содержания всех статических переменных, объявленных в классе..., но эта память выделяется только однажды в классе, неважно, сколько экземпляров класса Вы создаете.
Для каждого экземпляра класса, который Вы создаете, (и не был Собран "мусор") можно ли приблизить объем потребляемой памяти сложением использования памяти каждой основанной на экземпляре заявленной переменной... (поле)
ссылочные переменные (судьи к другим объектам) берут 4 или 8 байтов (ОС на 32/64 бита?) int16, Int32, Int64 берут 2,4, или 8 байтов, соответственно...
строковая переменная берет дополнительное устройство хранения данных для некоторых элементов метаданных, (плюс размер указателя адреса)
, Кроме того, каждая ссылочная переменная в объекте, как могли также полагать, "косвенно" включала память, поднятую в "кучу" объектом, на который это указывает, хотя Вы, вероятно, хотели бы считать ту память как принадлежащий тому объекту не переменная, которая ссылается на него...
и т.д. и т.д.
Грубый способ может быть таким, если вы хотите знать, что происходит с конкретным объектом
// Measure starting point memory use
GC_MemoryStart = System.GC.GetTotalMemory(true);
// Allocate a new byte array of 20000 elements (about 20000 bytes)
MyByteArray = new byte[20000];
// Obtain measurements after creating the new byte[]
GC_MemoryEnd = System.GC.GetTotalMemory(true);
// Ensure that the Array stays in memory and doesn't get optimized away
GC.KeepAlive(MyByteArray);
, можно получить весь материал процесса, возможно, вот так
long Process_MemoryStart = 0;
Process MyProcess = System.Diagnostics.Process.GetCurrentProcess();
Process_MemoryStart = MyProcess.PrivateMemorySize64;
надеюсь, что это поможет;)