我想知道,例如,我的项目中有大约80个域,是否意味着当我运行项目时80个域将被加载到内存中,或者当我需要该域时它将被加载。 。
似乎我在一个项目中有很多域,我必须禁用自动编译并增加perm gen空间。
有什么解决方案可以在我需要访问这些域时加载吗? 并非所有域名都会被使用...有时它只是一个小域名,几乎从未被用户触及过某些事情(即特殊情况)
我现在正在使用grails 1.1.1并且必须禁用域的自动编译,否则它将卡住并耗尽内存/内存gen空间
答案 0 :(得分:2)
Grails由Hibernate支持,Hibernate确实需要在启动时加载配置中的每个域类,因此不会只加载域的部分。
增加PermGen是一件很正常的事情,尤其是在开发中,因为默认情况下只有64mb,当grails重新编译并重新启动应用程序时,类文件无法轻松卸载。
从war文件运行时,您是否观察到类似的内存使用情况?
答案 1 :(得分:0)
在开发模式下运行时是否遇到此问题?如果是这样,您可以尝试将开发模式数据源从内存HSQLDB数据库更改为基于文件的HSQLDB数据库。您可以在grails-app / conf / DataSource.groovy
中找到需要编辑的文件