虚拟内存内存泄漏

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

我在 linux (ubuntu20) 上运行 tensorflow。 TF 执行我的 c++ 函数以进行图形编译/销毁。

进程虚拟内存的消耗增长,直到内存不足(>40GB),进程被杀死。

我使用

malloc
钩子跟踪
free
/
mmap
munmap
/
LD_PRELOAD
,并与 /proc/self/status (VmSize) 中的进程虚拟内存消耗进行比较。 每个图形编译都会增加几乎相同大小的 malloc 分配内存和进程虚拟内存。

图破坏减少了 malloc 分配的大小,但不会减少进程虚拟内存。

所以尽管 malloc 分配的内存保持整体稳定,进程虚拟内存增长很快。

例如:

before compile: 41MB[mmap]/3320MB[malloc]/12428MB[process]
after  compile: 46MB[mmap]/7434MB[malloc]/16529MB[process]
before destroy: 46MB[mmap]/7436MB[malloc]/16593MB[process]
after  destroy: 46MB[mmap]/3250MB[malloc]/16593MB[process]

graphDestroy
不会破坏所有设计,因此预计会有少量剩余物。

我试着玩

mallopt(M_MMAP_THRESHOLD)
没有结果。

为了找到泄漏点,还可以做什么?

c++ linux memory-management memory-leaks
© www.soinside.com 2019 - 2024. All rights reserved.