【问题标题】:Is it normal that my Grails application is using more than 200 MB memory at startup?我的 Grails 应用程序在启动时使用超过 200 MB 的内存是否正常?
【发布时间】:2010-12-28 07:23:45
【问题描述】:

我的Grails 应用程序正在开发环境中运行。我仍然没有投入生产,但无论如何,我的 Grails 应用程序仅在启动时需要 230 MB 是否正常(引导程序为空且到目前为止未处理任何请求)?

你知道为什么会出现这种情况吗,如何在开发模式下提高内存使用率,最重要的是,在生产环境中是否减少?

【问题讨论】:

  • 运行一些请求后,内存做了什么?当它运行一段时间后会发生什么(GC 是否完成它的工作)?
  • 嗯,它总是在增加(GC 并没有真正发挥作用)但是在这里,我强烈怀疑我自己的应用程序存在一些内存泄漏。我稍后会对此进行调查。但是,刚启动后,它似乎仍然太大。什么会影响启动时的内存使用?

标签: optimization memory memory-management grails


【解决方案1】:

我不会将所有内存使用归咎于 Grails。因为它使用嵌入式 Tomcat(旧版本中的 Jetty),所以即使运行空应用程序也会有相当大的开销。

IMO,230MB 对于 Java 应用程序来说是一个很大的内存使用。在编写基于 jvm 的应用程序时,高内存使用只是生活的一部分。

【讨论】:

    【解决方案2】:

    我的在线 Grails 应用程序在只有 512MB 的 VPS 中运行(其中包括 Drupal CMS、Apache、电子邮件服务......以及运行 GRails 的 Tomcat),因此您绝对可以调整您的应用程序以使用更少的内存

    【讨论】:

    • 在我看来就是这样。但是怎么调呢?
    • 我不是专家,但作为第一个解决方案,您是否尝试过限制 tomcat 的内存量,可能默认情况下会占用大量内存,这不是问题您的具体应用
    【解决方案3】:

    回答你的问题,是的——这很正常。如果您的应用程序中有很多 GSP,这尤其正常。 GSP 是运行时编译的,因此您可以通过增加 permgen 空间来加速它们的生成。

    您可以通过确保在加载服务器 JVM 时传递“-server”标志来提高内存使用和性能。

    【讨论】:

    • 谢谢你的回答。 -server 标志是什么?
    • Java 有两个可以使用的虚拟机。客户端是默认值。服务器自带JDK。检查您是否使用“java -version -server”安装了它。服务器运行速度更快,但启动时间更长并使用更多内存。查看hubpages.com/hub/Using_the_Server_JVM 了解如何将其设为默认值。
    猜你喜欢
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多