Удалить загруженные объекты кеша Drake из RAM

Я разработал план по созданию большого набора объектов в кеше Дрейка. Теперь, вне плана, я побежал lapply по подмножеству этих объектов, чтобы я мог суммировать некоторые из их свойств и планировать свои следующие шаги.

я использую readd чтобы загрузить каждый из этих кэшированных объектов внутри функции, над которой я работаю, но они, похоже, все еще занимают оперативную память после того, как я закончу с ними. Это проблема в моем сценарии, потому что это 100 ГБ ОЗУ к моменту завершения. Я не уверен, где в среде я должен их искать, если мне нужно явно удалить их.

Я понимаю, что Дрейк делает что-то похожее на запоминание с кешем, так как если я readd один и тот же объект дважды, первый занимает время для чтения с диска, а второй - мгновенно. Но в этом сценарии я бы хотел рассматривать кеш как простой источник данных, как любой другой файл, чтобы объект не занимал оперативную память, если он rm()или выходит за рамки.

1 ответ

Догадаться! Похоже, чтоstorr объект, возвращенный get_cache или new_cache имеет flush_cacheметод. Называя это, тогдаgc(), возвращает память.

Должен flush_cache быть задокументировано где-нибудь в drake, даже если это происходит от storr?

Я также обнаружил, что если я позвоню readd из нескольких процессов с mclapply, объекты не остаются в ОЗУ, поскольку не передаются обратно в основной процесс.

Другие вопросы по тегам