Tomcat 8.5的Java堆内存设置及可能的后果

Tomcat 8.5的Java堆内存设置及可能的后果,java,tomcat,heap,Java,Tomcat,Heap,我在Linux虚拟机上安装了Tomcat 8.5,该虚拟机具有16 GB RAM 服务器中加载了四个Web应用程序(其中三个是Spring Boot应用程序)。其中一个应用程序可以创建大型PDF和Excel报告(带有Jasper报告),还可以每小时执行“中等强度”处理的计划任务 我有很多OutOfMemoryException(java堆空间),所以我更新了Tomcat配置。这是我当前的jvm堆配置(/tomcat_dir/bin/setenv.sh): 过了一会儿,出现了一个新的OutOfMe

我在Linux虚拟机上安装了Tomcat 8.5,该虚拟机具有16 GB RAM

服务器中加载了四个Web应用程序(其中三个是Spring Boot应用程序)。其中一个应用程序可以创建大型PDF和Excel报告(带有Jasper报告),还可以每小时执行“中等强度”处理的计划任务

我有很多OutOfMemoryException(java堆空间),所以我更新了Tomcat配置。这是我当前的jvm堆配置(/tomcat_dir/bin/setenv.sh):

过了一会儿,出现了一个新的OutOfMemoryException(这次超出了GC开销限制)。因此,我尝试了以下配置:

-Xms8192m
-Xmx8192m
-XX:MaxPermSize=2048m
Spring Boot应用程序启动正常,但过了一段时间(15-30分钟,一个“重介质”计划任务执行),它全面崩溃了。:例如,数据源连接和查询崩溃,出现外部ssl异常(无法生成DH密钥对)

我对JVM堆管理有点困惑,所以我的问题是: 分配8GB的堆大小是个坏主意?为什么?您推荐什么配置?

如果你需要更多的信息,请告诉我


祝您度过愉快的一天。

首先,您应该检查内存消耗是否可以解释,或者是否是由于错误造成的。有一些工具可以一次检查一个堆转储ST应用程序。日志也可能有很好的信息。
-Xms8192m
-Xmx8192m
-XX:MaxPermSize=2048m