Tomcat抛出"java.lang.OutOfMemoryError:Java堆空间",但转储中的堆大小小于-Xmx

CQL*_*QLI 5 java jvm out-of-memory

我们的tomcat服务器抛弃了"java.lang.OutOfMemoryError:Java堆空间",但转储文件中的堆大小仅为1.7GB,-Xmx为4GB.

我不确定发生了什么事,你能帮助我吗?

环境:Redhat tomcat6 jdk6

gav*_*koa 2

XmxSIZE可能比 Java 核心转储更大,因为OutOfMemory当您尝试分配大对象时会发生这种情况!

我们的应用程序的-Xmx1000m670 MiB 转储在OutOfMemory用户上传 300 MiB 附件时崩溃。

我们在 VisualVM 中的“显示线程”跟踪中发现了这一点System.arrayCopy。从本地堆栈帧变量指向 300 MiB 字节数组的引用。

现在,我们限制附件大小并避免我们的应用程序将来崩溃。