![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Эти интерфейсы накладывают ограничения на сумму памяти кучи, которая будет
использована всеми соединениями с базой данных в
рамках единственного процесса. 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.
Choose any three.
SQLite C Interface
Наложите ограничение на размер кучи
sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N);