2013-11-11 2 views
1

У моего веб-приложения есть функция для того, чтобы пользователь мог сдать экзамен. И я использую drools для оценки баллов и оценки уровня знаний. Я использую сеанс учета состояния. Мой случай - это что-то вроде этого.Drools очищает рабочую память

  1. Каждый раз, когда пользователь принимает экзамен, в правила добавляется 2 java beans, один для оценки оценки, а другой - для результата.
  2. Когда пользователь закончит экзамен, результат экзамена будет сохранен в базе данных.
  3. После этого следующий пользователь будет идти в том же цикле

Мой вопрос я должен очистить рабочую память после одного пользователя? Если да, то как я могу это сделать?

ответ

0

Если вы используете сеансы с сохранением состояния, обязательно используйте dispose() после их использования. Кэширование kbases также рекомендуется, если это возможно, но создание их по требованию не должно протекать в любом случае.

Вы должны попробовать профилировать, чтобы обнаружить утечку памяти в Drools.

Кроме этого, это похоже на любое другое приложение Java. Используйте профилировщик, чтобы узнать, какой класс (если есть) сохраняет ваши экземпляры объекта в памяти.

+0

Можете ли вы дать мне ссылку о том, что ** профилирование **? Я googled, я не знаю, что это такое. Извините за этот запрос noob. – newbie

+0

http://www.eclipse.org/tptp/home/documents/tutorials/profilingtool/profilingexample_32.html – Imran

+0

http://www.vogella.com/articles/JavaPerformance/article.html – Imran

0

Если вы повторно используете один и тот же ksession для всех своих экзаменов, обязательно верните факты, которые вы вставили во время выполнения сеанса. insertLogical() может быть полезным в этом случае.

Если вы используете один сеанс для каждого экзамена, просто удалите сеанс после его использования.

Надеюсь, это поможет,

Смежные вопросы