JVM内存不足问题

时间:2019-06-18 23:42:01

标签: java tomcat ibm-cloud cloudfoundry buildpack

当我尝试将Tomcat项目推送到IBM Cloud时,我得到了这个提示:

  

无法计算JVM内存配置:不足   堆剩余的内存。可用于分配256M的内存是   少于分配的内存   578931K(-XX:ReservedCodeCacheSize = 240M,-XX:MaxDirectMemorySize = 10M,   XX:MaxMetaspaceSize = 66931K,Xss1M * 250个线程)

我无法增加内存限制。我尝试使用JVM标志来减少manifest.yml文件中JVM的内存使用量:

env:
    JAVA_OPTS: '-XX:MaxMetaspaceSize=80780K -Xss160k -Xmx200M -XX:ReservedCodeCacheSize=16M -XX:MaxDirectMemorySize=16M'

,并尝试在manifest.yml文件中使用旧版的Java buildpack:

buildpack: https://github.com/cloudfoundry/java-buildpack#v3.19.2 

但是我在做这两件事时都出错了。我该怎么解决?

2 个答案:

答案 0 :(得分:0)

您可以尝试将Tomcat的最大线程池减少到最小,因为默认值为200。当然,这确实会降低其并发性,并将对Web服务器的访问限制为非常有限的用户数。

不幸的是,Web服务器的Java占用空间非常大,并且由于使用了最新的CF buildpack,我无法启动内存少于1GB的服务器(虽然可以,但不是出于生产目的)。

答案 1 :(得分:0)

面临同样的问题?

环境: -JAVA_OPTS: '-XX:MaxMetaspaceSize=80780K -Xss160k -Xmx200M -XX:ReservedCodeCacheSize=16M -XX:MaxDirectMemorySize=16M' -JBP_CONFIG_OPEN_JDK_JRE: '[memory_calculator: {stack_threads: 10, memory_sizes: {stack: 512k}}]'

在 manifest.yml 文件中使用这个