Linux核心转储与堆转储?

Posted

技术标签:

【中文标题】Linux核心转储与堆转储?【英文标题】:Linux core dump vs heap dump? 【发布时间】:2017-01-29 09:30:57 【问题描述】:

我在 Linux 机器上有这个文件。对我来说,它看起来像核心转储,与堆转储不同。对吧?

8dbe79c2f000-8dbe79c34000 r--s 005f8000 fd:01 30800604                 /path../charsets.jar
8dbe79c34000-8dbe79c35000 r--s 00007000 fd:01 30800604                 /path../sunec.jar
8dbe79c35000-8dbe79c3a000 rw-p 00063000 fd:01 30800604                 /path../jsse.jar

.......

如果是核心转储,它代表什么?我了解 8dbe79c2f000-8dbe79c34000 应该是内存空间。但是这些信息代表什么?

    30800604 /path../charsets.jar fd:01

【问题讨论】:

从哪里来的?你看,如果它是由一个失败的 JVM 生成的,它可能仍然是一个 java 堆转储。 它已作为生产环境中的内存转储文件提供。所以我不确定它实际上是什么。但无论如何,它不包含对象详细信息,例如那个时间点内存中的对象是什么,它们的大小,没有预期作为堆转储的对象?所以在我看来它不像堆转储。 【参考方案1】:

您是否尝试过file 命令。更多详情man 1 file 它在系统上显示如下所示的核心转储

➜  ~  file core.28983
core.28983: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './a.out'
➜  ~

jar 文件通常不是核心文件,它们是 java 存档。 jar 上file 命令的输出看起来像我的系统上的以下内容

file /usr/share/texmf/scripts/ppower4/pp4p.jar
/usr/share/texmf/scripts/ppower4/pp4p.jar: Zip archive data, at least v1.0 to extract

【讨论】:

ELF 64 位 LSB 核心文件 x86-64 你能详细说明一下我没明白吗? file 命令会告诉你文件的类型。在上面的示例中,它表示它是 ELF 64 位核心文件。

以上是关于Linux核心转储与堆转储?的主要内容,如果未能解决你的问题,请参考以下文章

Linux:段错误(核心已转储) Segmentation fault (core dumped)(在Linux上如何得到一个段错误的核心转储)(笔记)(未完成,暂停)

如何使用 VSCode 调试 Linux 核心转储?

Linux 中的核心转储文件是啥?它提供啥信息?

在 Linux 上创建核心转储

分析分段错误核心转储 (gdb)

如何在 montavista linux 上为守护进程启用核心转储?