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上如何得到一个段错误的核心转储)(笔记)(未完成,暂停)