scala – 重新创建Squeryl内存数据库时内存泄漏
发布时间:2020-12-16 10:02:11 所属栏目:安全 来源:网络整理
导读:我正在写一个简单的 Scala Squeryl应用程序.出于测试目的,每次在sbt中运行“test”时,都会创建一个内存中的H2 db并填充测试数据.每次运行后,我都可以看到任务管理器中java.exe(其中sbt正在运行)的内存使用量增加,直到4或5次运行后,它与OutOfMemoryError崩溃.
我正在写一个简单的
Scala& Squeryl应用程序.出于测试目的,每次在sbt中运行“test”时,都会创建一个内存中的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:UsersOlegAppDataLocalTempsbt7320472784033855835.log java.lang.OutOfMemoryError: PermGen space Error during sbt execution: java.lang.OutOfMemoryError: PermGen space 解决方法
将以下标志添加到SBT启动脚本:
-XX:CMSClassUnloadingEnabled -XX:MaxPermSize = 256m. 那应该解决这个问题. 更新: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |