我刚刚从 2.0.0-RELEASE 升级到 2.0.1-RELEASE,并且我看到 OOM 异常和/或我的 Spring Boot 应用程序完全崩溃。自从从 2.0.0-RELEASE 升级到 2.0.1-RELEASE 以来,我没有对我的服务器或应用程序本身进行任何软件或硬件更改,并且在 2.0.0-RELEASE 或之前的任何版本下我没有遇到这些问题。我一直使用 Maven 插件来运行我的服务器,如下所示:
sudo mvn spring-boot:run -Drun.jvmArguments="-Xmx14336m"
请注意向 JVM 分配的最大内存量。这是必要的,因为我的应用程序非常占用内存。似乎设置 JVM 参数不再正常工作或无法按照我的预期工作,因为我在 Spring Boot 日志中看到了很多这样的内容:
2018-04-09 07:03:53.616 错误 6922 --- [https-openssl-nio-443-exec-245] oaccC[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet ] 在路径 [] 的上下文中抛出异常 [处理程序调度失败;嵌套$ java.lang.OutOfMemoryError:Java堆空间
自 2.0.0-RELEASE 以来,我一直在 Java 9 下运行,没有出现任何问题:
java 9.0.4 Java(TM) SE 运行时环境(版本 9.0.4+11) Java HotSpot(TM) 64 位服务器 VM(版本 9.0.4+11,混合模式)
目前,我已降级回 2.0.0-RELEASE,这似乎已经解决了 OOM 异常和崩溃问题。
在 2.0.1 中,向 Spring Boot 或通过 Maven 插件分配更多内存的首选方式是否发生了变化?我无法找到任何相关信息,但如果某处描述了这一点,而我只是错过了,我深表歉意。预先感谢您的任何帮助。