我一直保存或更新的MongoDB Grails中的几个对象时,发现了一个奇怪的问题。 目前我使用的Grails 2.2.3和MongoDB插件1.3.0。
这个问题似乎是MiUsuario的情况下,永远不会GC既不当我手动调用GC。 在我们的主要应用我们不作批量更新,但这样做时,负载测试(使用JMeter和监视JVM与Java VisualVM的)这个问题会导致内存填充和Tomcat停止响应。
我创建了一个新的小应用程序显示的问题。
一个简单的域对象:
class MiUsuario {
ObjectId id
String nickName
}
我的控制器:
import pruebasrendimiento.Prueba
class MiUsuarioController {
def doLogin(String privateKey, String id){
MiUsuario user = MiUsuario.get(id)
user.nickName = new Random().nextInt().toString()
user.save(failOnError:true)
render 'ok'
}
}
我BuildConfig(只依赖和插件的部分):
dependencies {
}
plugins {
// runtime ":hibernate:$grailsVersion"
runtime ":jquery:1.8.3"
runtime ":resources:1.2"
build ":tomcat:$grailsVersion"
// runtime ":database-migration:1.3.2"
// compile ':cache:1.0.1'
runtime ":mongodb:1.3.0"
}
我也尝试过的东西,伯特说,很久以前( http://burtbeckwith.com/blog/?p=73 ),但DomainClassGrailsPlugin.PROPERTY_INSTANCE_MAP.get()。明确的()没有任何区别。 这就是在该页面表示,其他选项,RequestContextHolder.resetRequestAttributes(),给了我一个例外。