gpt4 book ai didi

java - Java 内存不足

转载 作者:行者123 更新时间:2023-12-01 14:41:52 25 4
gpt4 key购买 nike

好吧,我有内存泄漏。它很可能位于 GUI 或 ExecutorCompletionService 中。监控程序内存有哪些选项?

是的,我遇到内存不足错误。我在 eclipse 中的 vm 参数上设置了 -XX:+HeapDumpOnOutOfMemoryError 来生成转储文件。情况是有一个 ExecutorCompletionService 运行计算密集型任务的线程池。这些线程用中间结果向 GUI 线程发出信号。

我正在审查 ExecutionController 类的单元测试,并且想知道是否可以将内存监视集成到单元测试中。

关于分析选项,我上个月成功完成了此操作,但我不记得使用的过程或专业填充程序。我打开了一个单独的窗口,并从外部运行的监视器监控实时快照。我依稀记得在确定发生内存泄漏的精确类成员时有些困难,但提供了足够的信息来解决前面的问题。

我将在不久的将来尝试建议的监控选项。

最佳答案

内存泄漏可能是由于超出了 JVM 的堆栈或堆大小。识别内存泄漏的第一步是确认是否存在内存泄漏。请尝试使用 JVM 命令行选项增加堆和堆栈空间。 -xmx-xss 分别是增加堆和堆栈大小的选项。

一旦得到确认,有多种工具可以帮助缩小违规代码块的范围,从而识别泄漏。我最喜欢的是在内存不足异常时转储正在运行的线程,假设它发生了,并检查转储。请尝试 java -Xrunhprof:help 了解更多详细信息。我使用内存分析器 (MAT),一个 Eclipse 插件来分析转储。

此外,Java Memory Extensions提供了有关如何内省(introspection)正在运行的 JVM 的线程、堆和堆栈大小的详细信息。如果您使用 JDK 1.6 及更高版本,则它附带 visual vm ,一个分析工具也可以帮助实现此目的。

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

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