【发布时间】:2015-05-22 05:01:36
【问题描述】:
我在 linux 机器上遇到以下错误。
Exception in thread "http-8080-Processor17" java.lang.OutOfMemoryError:Java Heap Space
其中一个 8080 端口时不时地处于密切等待状态。
请提出问题的根本原因。
【问题讨论】:
标签: java tomcat catalina.out
我在 linux 机器上遇到以下错误。
Exception in thread "http-8080-Processor17" java.lang.OutOfMemoryError:Java Heap Space
其中一个 8080 端口时不时地处于密切等待状态。
请提出问题的根本原因。
【问题讨论】:
标签: java tomcat catalina.out
为了找到内存异常背后的原因,您可以对您的应用程序进行线程转储。要获取线程转储,请执行以下命令:
kill -3 <process_id>
<process_id> 是您的进程的 pid。您可以通过以下方式找到它:
ps aux | grep java
或任何其他可用的工具。线程转储将被发送到标准输出流,而不终止进程。因此,您可以分析日志。 您还可以使用以下 JVM 选项:
-XX:OnOutOfMemoryError="kill -3 %p"
在每个 OutOfMemory 错误时自动生成进程的线程转储。
【讨论】:
无论您运行的是什么平台,无论是 Linux、Windows 还是任何其他平台,您都可以拥有有限堆。 Java 分配有限的内存来运行程序。 这个内存空间可以分为两个区域。
您可以通过传递参数来初始化堆和 PermSpace “-XX:MaxPermSize” 您可以通过传递参数来初始化堆大小 “-Xmx” 如果您没有初始化 JVM,则会为您的应用程序分配默认内存。
您可以检查使用 Java Memory Profiler 来检查您的程序的哪一部分正在使用更多的内存空间。
【讨论】:
java.lang.OutOfMemoryError:Java Heap Space : 通常是由于缺少 系统内存(对于JVM),有时也可能由于内存而发生 泄漏(编程)。
JVM在java堆内存用完时抛出“OutOfMemoryError”
解决OutOfMemoryError: java heap Space,(简单方法)
通过设置 JVM 参数 "-Xms" 和 -Xmx" 来增加堆大小 - 最小和最大堆大小
检查当前值并像“-Xmx1024M”一样增加它
如果它没有解决,那么它一定是由于内存泄漏(idk more about how to fix memory leak) 为了更好地理解,请参阅:Java Heap Space
【讨论】: