Я пишу простое приложение Scala & Squeryl.Для целей тестирования каждый раз, когда я запускаю 'test' в sbt, в памяти создается H2 db и заполняется тестовыми данными.После каждого запуска я вижу, что использование памяти java.exe (внутри которого запускается sbt) в диспетчере задач увеличивается до тех пор, пока после 4 или 5 запусков он не завершится с OutOfMemoryError.Я скучаю по чему-то, что явно освобождает память, используемую H2 или Squeryl?Сейчас я использую только Session.create
, а затем Persistence.create
.Вот выдержка из моего кода:
object Persistence extends Schema {
val documents = table[IncomeEntity]
val positions = table[Position]
val documentToPositions = oneToManyRelation(documents, positions).via(_.id === _.id_income)
}
class PersistenceTests extends FunSuite with BeforeAndAfterAll {
override protected def beforeAll() {
Class.forName("org.h2.Driver")
SessionFactory.concreteFactory = Some(
() => Session.create(DriverManager.getConnection("jdbc:h2:mem:test"), new H2Adapter)
)
}
test("DDL") {
transaction {
Persistence.create
assert(Persistence.documents.size == 0)
assert(Persistence.positions.size == 0)
}
}
test("Insert") {
transaction {
Persistence.create
(1 to 100) map { _ => IncomeMapper.save(new Income) }
assert(Persistence.documents.size == 100)
}
}
}
Я получаю следующие сообщения:
[info] PersistenceTests:
sbt appears to be exiting abnormally.
The log file for this session is at C:\Users\Oleg\AppData\Local\Temp\sbt7320472784033855835.log
java.lang.OutOfMemoryError: PermGen space
Error during sbt execution: java.lang.OutOfMemoryError: PermGen space