2014-07-02 7 views
1

Я сделал программу в Maxima (переводит ее в lisp, когда она работает поверх lisp), которая постепенно решает уравнения. Я хотел показать, что в случае, если невозможно, чтобы все уравнения могли быть загружены в ОЗУ и решались одновременно, то немногие из них могут быть загружены и постепенно мы можем добавить больше и использовать решения из ранее разрешенных уравнений, чтобы получить больше решений для новых добавлены уравнения.Сбор мусора в GCL

Моя программа работает нормально. Но проблема в том, что я, если мне нужно показать, что мой подход сэкономит RAM, мне нужно запустить GC до того, как будет решена новая система уравнений, чтобы я мог видеть, как минимальная память, которую я использую, в то время как в настоящее время компилятор не выглядит автоматически перейти на GC, поэтому он отображает агрегированную память, используемую для полной работы.

Я использую Lisp осуществление версия: GCL 2.6.8.

Мне нужно знать, как я могу заставить сбор мусора или какой-нибудь более эффективный подход, который кто-то может предложить, если его невозможно заставить GC в lisp (я не мог найти способ).

+0

Возможно, вас заинтересует [этот вопрос] (http://stackoverflow.com/questions/4194620/current-memory-usage-in-lisp). Вот информация о функции [room] (http://clhs.lisp.se/Body/f_room.htm). Возможно, такая статистическая информация (собранная несколько раз) может помочь вам доказать эффективность вашего алгоритма. – Mark

+0

@Mark: спасибо за ссылку, но я могу собрать ее из «комнаты». Не могу ли я заставить GC? – Rorschach

+1

Я бы просто прочитал руководство GCL ... –

ответ

2

оглавлению через страницы руководства из ВКТ я нашел следующее (это то, что вы хотели?)

Функция: GBC (х) Пакет: LISP ВКТ конкретны: Запускает сборщик мусора (GC) с коллекцией уровень, указанный X. NIL в качестве аргумента заставляет GC собирать ячейки только. T, поскольку аргумент заставляет GC собирать все.