您需要完全理解的是,这些输出只能指示JVM的影响,而不能指示实际的错误。实际错误及其根本原因可能发生在代码中的某处,例如内存泄漏,GC问题,同步问题,资源分配,甚至硬件设置。解决所有这些错误的简单方法是增加受影响的资源大小以解决问题。从性能测试和工程环境来看,我们将需要监视资源使用情况,分析每个类别,进行多个堆转储,遍历堆转储,检查和调试/优化代码等。表示您需要更多资源,我们必须努力。
java.lang.StackOverFlowError - 此错误指示堆栈内存已满。
java.lang.OutOfMemoryError - 此错误指示堆内存已满。
java.lang.OutOfMemoryError: GC Overhead limit exceeded - 此错误表明GC已达到其开销限制
java.lang.OutOfMemoryError: Permgen space -此错误表明永久生成空间已满
java.lang.OutOfMemoryError: Metaspace - 此错误指示元空间 已满(从Java JDK 8)
java.lang.OutOfMemoryError: Unable to create new native thread - 此错误表明JVM本机代码无法再从基础操作系统中创建新的本机线程,因为已经创建了这么多线程,并且它们消耗了所有可用的内存。虚拟机
java.lang.OutOfMemoryError: request size bytes for reason - 此错误表明交换内存空间已由应用程序完全消耗 。可以尝试更换不同厂商的JVM来解决,曾经在Windows 2008 R2 32bit SUN jvm 1.6上发生该报错,更改为BEA Jrockit 后不再报错。
java.lang.OutOfMemoryError: Requested array size exceeds VM limit - 此错误表明我们的应用程序使用的数组大小大于基础平台允许的大小