Red Hat的Tomcat 7容器上java的Heapsize和其他内存配置
我使用的是Red Hat tomcat7容器(与docker hub上的tomcat7非常类似): 我在其中部署了一些.wars,但在执行了很多过程后,我出现了以下错误:Red Hat的Tomcat 7容器上java的Heapsize和其他内存配置,java,tomcat,docker,heap-memory,Java,Tomcat,Docker,Heap Memory,我使用的是Red Hat tomcat7容器(与docker hub上的tomcat7非常类似): 我在其中部署了一些.wars,但在执行了很多过程后,我出现了以下错误: GC overhead limit exceeded java.lang.OutOfMemoryError: GC overhead limit exceeded 因此,我想研究max heapsize和其他内存设置: 命令: java -XX:+PrintFlagsFinal -version | grep -iE 'He
GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded
因此,我想研究max heapsize和其他内存设置:
命令:
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产品或产品的含义是什么
- max heapsize=java、应用程序或整个tomcat的最大内存消耗量吗?因为经过一些调查后,我发现该容器使用的内存比出现
问题时的1892MB(19839…)多得多outofmemory
- 内存泄漏-保留对正在使用的对象的引用,导致VM无法通过垃圾收集释放内存。解释得好多了。
通过查看
jmap-histo
- 你的应用程序运行正常,你确实需要更多的堆内存。您可以通过设置
set CATALINA\u OPTS=-Xmx2g
/proc/$pid/maps
或jmap
(默认格式)看到这一点,如果您在任何操作系统上安装了完整的JDK:
- JVM本身的代码,包括解释器和JIT编译器热点、各种库,以及通过JNI或JNA访问的任何“本机”代码和“本机”数据。一般来说,代码可以与其他进程共享,但我不确定在docker容器中是否仍然如此
- “Metaspace”(在Java 8中,在早期版本中为“PermGen”)和“CodeCache”,其中包含加载的类和用于它们的JITted代码
- 线程堆栈;Tomcat使用了相当多的线程,即使Java代码没有,JVM也有一些内置线程,可能还有本机线程
- 使用“直接”NIO缓冲区(我认为Tomcat至少有时可以)
top
或ps-F
进行比较
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)