Tomcat7 java.lang.OutOfMemoryError:Java堆空间

时间:2015-02-23 11:41:13

标签: java tomcat heap-memory

我正在运行tomcat7服务,这会给客户带来很大的负担。我在一个周末离开了应用程序,当我回来时,我注意到tomcat的CPU使用率增加到99%,在日志中我发现了以下错误:

Exception in thread "http-bio-8080-exec-908" java.lang.OutOfMemoryError: Java heap space
Exception in thread "http-bio-8080-exec-948" java.lang.OutOfMemoryError: Java heap space

这是否意味着当我有OutOfMemory异常时,我有908和948打开活动线程?

目前我的tomcat在默认配置下运行我还没有增加堆大小。

我们收到200 queries/sec左右。

My hardware:
CPU : Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz
Memory: 2GB

请你指出我正确的方向,我应该看看为了解决这个问题。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

当您的JVM用完特定资源时,会发生java.lang.OutOfMemoryError: Java heap space错误。

解决方案1:您应该增加该资源的可用性。当您的应用程序没有足够的Java堆空间内存来正常运行时。为此,您需要更改JVM启动配置并添加以下内容:

       -Xmx1024m

上面的配置将为应用程序提供1024MB的Java堆空间。您可以使用g或G表示GB,m或M表示MB,k或K表示KB。例如,以下所有内容相当于说最大Java堆空间为1GB:

 -Xmx1073741824 
 -Xmx1048576k 
 -Xmx1024m 
 -Xmx1g 


解决方案2:如果您的应用程序包含内存泄漏,则添加更多堆只会推迟java.lang.OutOfMemoryError:Java堆空间错误。 如果您希望解决Java堆空间的基本问题而不是屏蔽症状,那么您可以使用多种工具。
例如:Plumbr工具。在其他性能问题中,它捕获所有java.lang.OutOfMemoryErrors并自动告诉您导致它们的原因。您可以查看其他可用工具。而你的选择就是你的!
来源:
https://plumbr.eu/outofmemoryerror/java-heap-space

答案 1 :(得分:0)

可能有几个原因,

  1. 由于您没有增加默认内存分配,在高负载下,它可能没有足够的资源来为所有请求提供服务,而有些资源显然已经耗尽内存。首先要尝试的是调整jvm内存配置。

  2. 如果1不起作用,则可能是您的应用程序中可能阻止垃圾回收的错误。您可能希望在附加了分析器的情况下运行应用程序,以查看随时间收集的对象并使用该信息进行调试。

相关问题