gpt4 book ai didi

Java 内存不足错误

转载 作者:行者123 更新时间:2023-12-01 23:05:36 25 4
gpt4 key购买 nike

我看到内存不足问题,但不确定是 PERM GEN 区域还是堆空间。错误消息没有说明哪个区域内存不足。

这是部分堆栈跟踪:以下是对 BETWEENNESS 的开发人员可能有用的信息: java.lang.OutOfMemoryError at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:127) at java.util.zip.ZipFile.(ZipFile.java:143) at com..util.internal.ZipFiles.unzip(ZipFiles.java:91)我使用 jmap -heap 命令查看了内存耗尽之前的堆空间:

 using thread-local object allocation.
Parallel GC with 23 thread(s)

Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 31675383808 (30208.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 21757952 (20.75MB)
MaxPermSize = 536870912 (512.0MB)

Heap Usage:
PS Young Generation
Eden Space:
capacity = 9762177024 (9309.9375MB)
used = 7286558512 (6949.003707885742MB)
free = 2475618512 (2360.933792114258MB)
74.64071276403028% used
From Space:
capacity = 396230656 (377.875MB)
used = 340623360 (324.84375MB)
free = 55607296 (53.03125MB)
85.96592788620576% used
To Space:
capacity = 398131200 (379.6875MB)
used = 0 (0.0MB)
free = 398131200 (379.6875MB)
0.0% used
PS Old Generation
capacity = 1992163328 (1899.875MB)
used = 1455304512 (1387.8865356445312MB)
free = 536858816 (511.98846435546875MB)
73.05146578825087% used
PS Perm Generation
capacity = 418578432 (399.1875MB)
used = 418567008 (399.1766052246094MB)
free = 11424 (0.010894775390625MB)
99.99727076238844% used }

而且,我向 JVM 提供了以下参数:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/但我没有看到任何堆。

我的问题是为什么没有生成堆以及如何确定 JVM 的哪一部分已满。

谢谢。

最佳答案

您提供的信息显示,您的 PermGen 已满 99%。并且您的堆已满 73%。因此增加两者根本不会是坏事。

此外,您还可以使用 -XX:+PrintGCDetails 激活垃圾收集器的日志记录,以获取有关 JVM 如何使用内存的详细信息。另外激活 -XX:+PrintGCTimeStamps-XX:+PrintGCDateStamps-Xloggc:$filename 将日志发送到一个文件,您可以使用 IMB PMAT tool 之类的内容轻松分析该文件。或GCViewer .

此外,您应该考虑使用 VisualVM在运行时监视您的应用程序。

此外:我的一位同事发现了一种通过 gdb 更快地获取堆转储的聪明方法:

cat > /tmp/dodump <<EOF
gcore jvm.core
detach
quit
EOF
time gdb --batch --command=/tmp/dodump --pid=`pgrep java`
jmap -dump:format=b,file=jvm.hprof `which java` jvm.core
rm jvm.core
gzip -9 jvm.hprof

Source

所有功劳都归功于他。

关于Java 内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com