Удалить загруженные объекты кеша Drake из RAM
Я разработал план по созданию большого набора объектов в кеше Дрейка. Теперь, вне плана, я побежал lapply
по подмножеству этих объектов, чтобы я мог суммировать некоторые из их свойств и планировать свои следующие шаги.
я использую readd
чтобы загрузить каждый из этих кэшированных объектов внутри функции, над которой я работаю, но они, похоже, все еще занимают оперативную память после того, как я закончу с ними. Это проблема в моем сценарии, потому что это 100 ГБ ОЗУ к моменту завершения. Я не уверен, где в среде я должен их искать, если мне нужно явно удалить их.
Я понимаю, что Дрейк делает что-то похожее на запоминание с кешем, так как если я readd
один и тот же объект дважды, первый занимает время для чтения с диска, а второй - мгновенно. Но в этом сценарии я бы хотел рассматривать кеш как простой источник данных, как любой другой файл, чтобы объект не занимал оперативную память, если он rm()
или выходит за рамки.
1 ответ
Догадаться! Похоже, чтоstorr
объект, возвращенный get_cache
или new_cache
имеет flush_cache
метод. Называя это, тогдаgc()
, возвращает память.
Должен flush_cache
быть задокументировано где-нибудь в drake, даже если это происходит от storr?
Я также обнаружил, что если я позвоню readd
из нескольких процессов с mclapply
, объекты не остаются в ОЗУ, поскольку не передаются обратно в основной процесс.