Кэш-память не сбросит или очистит память

В консоли отладки можно получить строковое значение путем выполнения чего-то как:

(gdb) print (void)CFShow(myCFString)

или:

(gdb) po (NSString*)myCFString

Любой из тех отобразит содержание всей строки к консоли отладки. Это - вероятно, самый легкий способ иметь дело с большими, строками переменной длины или структурами данных любого вида.

Для получения дополнительной информации, эти print команда в отладчике в основном выводит некоторую структуру данных к консоли. Можно также вызвать любые функции или что бы то ни было, но так как печать не имеет доступа к объявлениям функции, необходимо удостовериться, что Вы обеспечиваете их неявно (как показано в примере выше), или команда печати будет жаловаться.

po ярлык для print-object и совпадает с печатью за исключением объектов Objective C. Это в основном функционирует как это:

(gdb) print (const char *)[[theObject debugDescription] UTF8String]

Это действительно полезно для исследования вещей как NSData объекты NSArray/NSDictionary и объект.

Для намного большей информации об отладке тем, см. Техническое примечание TN2124 - Mac OS X, Отлаживающий Волшебство , и (от консоли отладки) можно выпустить команду справки также.

13
задан jensgram 1 August 2012 в 06:40
поделиться

3 ответа

Вам действительно нужно изменить настройки memcached, чтобы он не занимал столько памяти. Когда вы запускаете memcached, вы можете передать ему объем памяти, который он должен использовать, в мегабайтах, используя флаг -m . Для получения информации см. его документацию .

flush просто аннулирует все элементы в кэше, он не дает команду memcached для освобождения или резервирования памяти, которую он использует. Я сомневаюсь, что вы можете использовать команду memcached для освобождения памяти, которую он использует.

17
ответ дан 1 December 2019 в 21:12
поделиться

Колин, Команда Flush All приводит к тому, что кеш устанавливает текущее время истечения срока действия. Следующий запрос существующего ключа ничего не вернет, и запись будет удалена из кеша. Memcached не имеет отдельного процесса для очистки просроченных элементов и использует «ленивый» метод, который делает этот процесс очень легким и эффективным. Из-за этого, если вам действительно нужно удалить кеш и начать с нуля, единственный реальный способ сделать это - перезапустить Memcached. Долгим обходным путем было бы сбросить все ваши ключи, отправить команду «Очистить все», а затем перебрать каждый ключ, выполняющий get против него, в результате чего запись будет удалена. Не уверен на 100%, что этот метод сработает, но в теории звучит правдоподобно.

13
ответ дан 1 December 2019 в 21:12
поделиться

Попробуйте это

Mage :: app () -> getCacheInstance () -> getFrontend () -> getBackend () -> clean (Zend_Cache :: CLEANING_MODE_ALL);

-5
ответ дан 1 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: