【问题标题】:Memory Leak in Grails with MongoDB使用 MongoDB 的 Grails 中的内存泄漏
【发布时间】:2013-07-30 07:57:36
【问题描述】:

在使用 MongoDB 在 Grails 中保存或更新多个对象时,我发现了一个奇怪的问题。目前我正在使用 Grails 2.2.3 和 MongoDB 插件 1.3.0。

问题似乎是 MiUsuario 的实例在我手动调用 GC 时也不是 GC。在我们的主应用程序中,我们不进行批量更新,但是在进行负载测试(使用 JMeter 并使用 Java VisualVM 监控 JVM)时,此问题会导致内存填充和 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"
    }

我也尝试过 Burt 很久以前说过的东西 (http://burtbeckwith.com/blog/?p=73),但 DomainClassGrailsPlugin.PROPERTY_INSTANCE_MAP.get().clear() 没有任何区别。该页面中提到的另一个选项 RequestContextHolder.resetRequestAttributes() 给了我一个例外。

【问题讨论】:

    标签: mongodb grails memory-leaks garbage-collection


    【解决方案1】:

    我遇到了类似的问题,它解决了升级到 grails 2.3.1 的问题。试试看。

    【讨论】:

    • 我会尽力让你知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多