从gdb核心,找到最大的可用内存块

问题描述 投票:0回答:1

我有一个系统进程核心,如果它分配的内存超过配置的限制,它就会杀死进程。 看来进程崩溃是因为内存碎片。 为了确认我想知道最大的可用空闲内存块。 有什么办法可以从核心找到它吗?

gdb fragmentation core-file
1个回答
1
投票

假设您使用的是Linux glibc,gdb插件如libheapgefpwndbg提供了检查空闲块的功能。

此外,如果您可以使 OOM 重新发生,您可以尝试一些内存分配器,该分配器具有在崩溃之前自行打印 malloc arena 布局的功能(包括 jemalloc,请参阅用例:基本分配器统计数据

Valgrind 如果内存泄漏可能会有所帮助,但我不确定它对于内存碎片是否有用。

© www.soinside.com 2019 - 2024. All rights reserved.