gpt4 book ai didi

c - 监控子进程的内存使用情况

转载 作者:IT王子 更新时间:2023-10-29 00:31:20 26 4
gpt4 key购买 nike

我有一个 Linux 守护进程,它派生出几个子节点并监视它们是否崩溃(根据需要重新启动)。如果父进程可以监视子进程的内存使用情况,那就太好了——检测内存泄漏并在超出一定大小时重新启动子进程。我该怎么做?

最佳答案

您应该能够从/proc/{PID}/status 中获取详细的内存信息:

Name:   bash
State: S (sleeping)
Tgid: 6053
Pid: 6053
PPid: 6050
TracerPid: 0
Uid: 1007 1007 1007 1007
Gid: 1007 1007 1007 1007
FDSize: 256
Groups: 1007
VmPeak: 48076 kB
VmSize: 48044 kB
VmLck: 0 kB
VmHWM: 4932 kB
VmRSS: 2812 kB
VmData: 2232 kB
VmStk: 84 kB
VmExe: 832 kB
VmLib: 6468 kB
VmPTE: 108 kB
Threads: 1
SigQ: 0/8190
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001010
SigCgt: 0000000188020001
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
Cpus_allowed: 0f
Mems_allowed: 00000000,00000001
voluntary_ctxt_switches: 69227121
nonvoluntary_ctxt_switches: 19071

但是,除非内存泄漏非常严重,否则很难通过查看进程统计信息来检测它们,因为 malloc 和 free 通常从它们对应的系统调用 (brk/sbrk) 中非常抽象。

您还可以查看/proc/${PID}/statm。

关于c - 监控子进程的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754237/

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