< 返回版块

limodou 发表于 2021-11-07 17:05

我写了一个简单的程序,一个死循环不断读目录或文件,结果发现内存越用越多,不知各位如何处理。

验证代码如下:

use std::{fs, thread, time};

fn main() {
    let step = time::Duration::from_secs(1);

    loop {
        visit_dir("./src");
        thread::sleep(step);
    }
}

fn visit_dir(dir: &str) {
    for f in fs::read_dir(dir).unwrap() {}
}

我在网上找了 axum 的例子,启动一个hello, world 的例子也是一样。

评论区

写评论
Bai-Jinlin 2021-11-11 15:33

就你这个代码我的机器上没出现内存增长的现象

作者 limodou 2021-11-11 08:30

我原来也担心是不是需要 close,但是查文档没找到。rust 都自动做了。

--
👇
xian9yu: 读了后记得close

作者 limodou 2021-11-11 08:28

后面在 linux 环境下又跑了一下,看着是不再有问题。可能是 MAC 下不知道为啥会增加。

向離 2021-11-08 11:22

读了后记得close

matrikslee 2021-11-08 09:50

你内存泄漏的代码不在贴出来的这部分里面

检查你底下那个for循环体内的代码块

1 共 5 条评论, 1 页