RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Наложите ограничение на размер кучи

sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N);

Эти интерфейсы накладывают ограничения на сумму памяти кучи, которая будет использована всеми соединениями с базой данных в рамках единственного процесса.

sqlite3_soft_heap_limit64() устанавливает и/или запрашивает мягкий предел суммы памяти кучи, которая может быть ассигнована SQLite. SQLite стремится держать использование памяти кучи ниже мягкого предела кучи, сокращая количество страниц в кэше страницы, когда использование памяти кучи приближается к пределу. Мягкий предел кучи "мягкий", потому что даже при том, что SQLite стремится остаться ниже предела, это превысит предел, а не произведет ошибку SQLITE_NOMEM. Другими словами, мягкий предел кучи только консультативный.

sqlite3_hard_heap_limit64(N) устанавливает твердую верхнюю границу в N байт на объем памяти, который будет ассигнован. sqlite3_hard_heap_limit64(N) аналогичен sqlite3_soft_heap_limit64(N), но выделения памяти потерпят неудачу, когда этот предел кучи будет достигнут.

Возвращаемое значение от обоих sqlite3_soft_heap_limit64() и sqlite3_hard_heap_limit64() является размером предела кучи до вызова или отрицательным значением в случае ошибки. Если аргумент N отрицателен, никакое изменение не внесено в предел кучи. Следовательно, текущий размер пределов кучи может быть определен вызовом sqlite3_soft_heap_limit64(-1) или sqlite3_hard_heap_limit(-1).

Установление пределов кучи к нолю отключает механизм ограничителя кучи.

Мягкий предел кучи не может быть больше, чем жесткий. Если жесткий предел кучи позволен, и sqlite3_soft_heap_limit(N) вызван со значением N, который больше, чем жесткий предел кучи, мягкий предел кучи устанавливается к значению жесткого предела кучи. Мягкий предел кучи автоматически позволен каждый раз, когда жесткий предел кучи позволен. Когда sqlite3_hard_heap_limit64(N) вызван, и мягкий предел кучи вне диапазона 1..N, мягкий предел кучи устанавливается к N. Вызов sqlite3_soft_heap_limit64(0), когда жесткий предел кучи позволен, делает мягкий предел кучи равным жесткому пределу кучи.

Пределы выделения памяти могут также быть переопределены, используя PRAGMA soft_heap_limit и PRAGMA hard_heap_limit.

Пределы кучи не проведены в жизнь в текущем внедрении, если одно или больше следующих условий верны:

Обстоятельства, при которых SQLite проведет в жизнь пределы кучи, могут измениться в будущих выпусках SQLite.