我在 linux 机器上收到以下错误。
Exception in thread "http-8080-Processor17" java.lang.OutOfMemoryError:Java Heap Space
并且其中一个端口 8080 时不时地进行密切等待。
请提出问题的根本原因。
我在 linux 机器上收到以下错误。
Exception in thread "http-8080-Processor17" java.lang.OutOfMemoryError:Java Heap Space
并且其中一个端口 8080 时不时地进行密切等待。
请提出问题的根本原因。
为了找出内存异常背后的原因,您可以对应用程序进行线程转储。要获取线程转储,请执行以下命令:
kill -3 <process_id>
您的进程的 pid在哪里<process_id>
。您可以通过以下方式找到它:
ps aux | grep java
或任何其他可用的工具。线程转储将被发送到标准输出流,而不终止进程。因此,您可以分析日志。您还可以使用以下 JVM 选项:
-XX:OnOutOfMemoryError="kill -3 %p"
在每个 OutOfMemory 错误时自动生成进程的线程转储。
无论您运行的是什么平台,无论是 Linux、Windows 还是任何其他平台,您都可以拥有有限堆。Java 分配有限的内存来运行程序。这个内存空间可以分为两个区域。
您可以通过传递参数“-XX:MaxPermSize”来初始化堆和 PermSpace 如果您不初始化,您可以通过传递参数“-Xmx”来初始化堆大小 JVM 将为您的应用程序分配默认内存。
您可以检查 Use 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