gpt4 book ai didi

java - Red Hat Tomcat 7容器上java的Heapsize等内存配置

转载 作者:行者123 更新时间:2023-11-30 08:37:41 25 4
gpt4 key购买 nike

我使用的是 Red Hat tomcat7 容器(与 docker hub 上的 tomcat7 非常相似):

registry.access.redhat.com/jboss-webserver-3/webserver30-tomcat7-openshift:1.2-12

我已经在其中部署了一些 .wars,但是在执行了很多过程之后我得到了以下错误:

GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded

所以我想研究最大堆大小和其他内存设置:

命令:

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
Output:
Picked up JAVA_TOOL_OPTIONS: -Duser.home=/home/jboss -Duser.name=jboss
intx CompilerThreadStackSize = 0
{pd product}
uintx ErgoHeapSizeLimit = 0
{product}
uintx HeapSizePerGCThread = 87241520
{product}
uintx InitialHeapSize = 125829120
{product}
uintx LargePageHeapSizeThreshold = 134217728
{product}
uintx MaxHeapSize = 1983905792
{product}
intx ThreadStackSize = 1024
{pd product}
intx VMThreadStackSize = 1024
{pd product}
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)

我不知道该如何解释这些信息。我考虑过增加堆大小。

  • pd产品或产品是什么意思?
  • 最大堆大小是否等于 java 或您的应用程序或整个 tomcat 的最大内存消耗?因为经过一些调查,我发现当容器出现 outofmemory 问题时,它使用的内存比 1892 MB(19839...)多得多。

最佳答案

Tomcat 应该为所有应用程序使用一个 JVM。这确实使用了 1892 MB ( 1983905792 B/10242 ),这里的问题可能是:

  • 您有内存泄漏 - 您保留了对正在使用的对象的引用,它们导致您的 VM 无法通过垃圾回收释放内存。解释得更好here .通过查看 jmap -histo <javaPID> 的输出来尝试找出发生这种情况的原因
  • 您的应用运行正常,您确实需要更多堆内存。您可以通过设置 set CATALINA_OPTS= -Xmx2g 来增加内存

关于java - Red Hat Tomcat 7容器上java的Heapsize等内存配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37045110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com