当前位置: 首页 > 面试题库 >

JVM崩溃时,Sun JDK可以生成核心/堆转储文件吗?

萧越泽
2023-03-14
问题内容

无论如何,当JVM崩溃时,是否有生成内核/堆转储文件的信息?由于这些文件通常对于查找代码中的错误非常有帮助。


问题答案:

使用以下JVM选项:

-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath="/tmp"

JVM会将堆的内容转储到指定目录中的文件中。请注意,这仅在OutOfMemoryError引发时发生,因为如果JVM因其他原因而崩溃,则确实不需要转储。

编辑:“布尔选项用-XX:+打开,而用-XX:-关闭。”
docs



 类似资料:
  • 问题内容: 每次我的应用程序崩溃时,都不会生成核心转储文件。我记得几天前,它 是 在另一台服务器 上 生成的。我正在使用bash屏幕运行应用程序,如下所示: 如您所见,如果要生成核心转储,则在使用哪个选项很重要,但是当遇到分段错误时,它仍然不会生成。我该如何运作? 问题答案: 确保当前目录(崩溃时可能会更改目录)是可写的。如果服务器调用,则该目录必须是该用户可写的。 同时检查。这可能会将核心转储重

  • 问题内容: JVM崩溃中的日志文件包含各种有用的调试信息,例如加载的共享库和完整的环境。我可以强制JVM以编程方式生成其中之一吗?通过执行使它崩溃的代码还是其他方式?或者以另一种方式访问​​相同的信息? 问题答案: 您可以尝试抛出OutOfMemoryError并添加-XX:+ HeapDumpOnOutOfMemoryError jvm参数。从1.6开始,这是新功能,而McDowell建议使用其

  • 我正在尝试将Java进程的Linux核心转储转换为堆转储文件,适合用Eclipse MAT进行分析。根据这篇博客文章,适应于较新的OpenJDK 12,我创建了一个核心转储,然后运行将转储转换为HPROF格式: 核心转储文件是22GB,而堆转储文件只有3MB,因此命令可能无法处理整个核心转储。此外,Eclipse MAT无法打开堆转储文件,并显示以下消息:

  • 问题内容: 有时,当我运行代码时,用+ 终止程序会生成一个核心转储文件。文件名的格式为。该程序不会突然终止,并且没有分段错误。我认为这是不和。如果我尝试+ 或+ ,则不会生成。 谁能说出为什么仅在按+ 时才生成?如何避免生成此核心转储文件?核心转储文件有什么用? 问题答案: 当进程由于程序故障而被操作系统终止时,进程将转储核心。发生这种情况的最典型原因是因为程序访问了无效的指针值。鉴于您有一个零星

  • 每个人都知道可以从正在运行的JVM中获得堆转储。另一种方式可能吗?我们可以使用堆转储来启动JVM吗? 这个问题我已经想了很久了。如果这是可能的,它将解决大量的时间,并使支持工程师容易思考。如果我们必须重新创建一些我们的客户所面临的罕见的问题,那么它就会大有帮助。[假设底层硬件和Java运行时是相同的,并且所有的支持文件也存在于文件系统中各自的位置]。 添加注意:这样做的意图不是在OOM发生时,而是

  • 问题内容: 我在Linux中有一个进程出现分段错误。我如何告诉它在失败时生成核心转储? 问题答案: 这取决于您使用的外壳。如果使用的是bash,则ulimit命令控制与程序执行有关的一些设置,例如是否应该转储core。如果您输入 那么这将告诉bash它的程序可以转储任何大小的内核。您可以根据需要指定诸如52M的大小,而不是无限制的大小,但是实际上,这不是必需的,因为核心文件的大小可能永远不会成为您