【问题标题】:Application startup difference eclipse and tomcat?应用启动区别eclipse和tomcat?
【发布时间】:2014-03-14 09:15:36
【问题描述】:

当我开发我的应用程序时,我会在 eclipse 中的 tomcat 上启动它。一切正常。

但是当我将war 文件部署到tomcat 并使用tomcat 的startup.bat 时,我不断收到java.lang.OutOfMemoryError: Java heap space 错误。这发生在创建 Spring @Bean 定义期间。也需要很长时间才能开始。

为什么从 eclipse 启动应用程序和在 tomcat 中手动启动应用程序之间有明显的区别?我该如何解决这个问题?

【问题讨论】:

  • 增加堆内存并重新启动它。
  • 如何找出 eclipse 使用的内存设置?因为在开发期间它工作得很好
  • 检查 Eclipse 和 Tomcat 上 JVM 的内存设置。如果您需要更具体的答案,请提供有关您如何实际启动这两个进程(来自 Eclipse 的 Tomcat 和独立的 Tomcat)的更多见解。

标签: java eclipse spring tomcat deployment


【解决方案1】:

为tomcat设置这些vm参数,

-XX:PermSize<size> - Set initial PermGen Size.
-XX:MaxPermSize<size> - Set the maximum PermGen Size.

了解更多info

【讨论】:

    【解决方案2】:

    看看[这个] (http://www.jkstack.com/2012/12/how-to-set-tomcat-heap-size-jvm-heap.html)

    从tomcat和eclipse启动应用程序没有区别。然而,它取决于各种参数,例如正在运行的 tomcat 实例的数量、正在运行的任何后台消耗大量内存的 Java 应用程序等。

    【讨论】:

      【解决方案3】:

      基本上 eclipse.ini 设置了所有 vm 内存参数 - 比如 -Xms40m -Xmx512m 等 -Xms 选项设置初始和最小 Java 堆大小。 Java 堆(“堆”)是内存的一部分,其中内存块被分配给对象并在垃圾回收期间被释放。 - http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

      你可能需要为你的 tomcat 做同样的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 2020-04-15
        • 2017-02-21
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        相关资源
        最近更新 更多