当我尝试将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
但是我在做这两件事时都出错了。我该怎么解决?
答案 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 文件中使用这个