我想将某个程序使用的 RAM 复制到一个文件中。然后稍后再次恢复该状态。
类似于 ctrl+z & fg 的效果,但我也想从该程序中释放 RAM。
当我运行一段使用大量内存的代码时,如下所示:
\na = "1"\nwhile True:a+=a\nRun Code Online (Sandbox Code Playgroud)\n在 Windows\xc2\xa010 中,它给了我memory error并且计算机仍然安全,但是在 Linux 中运行此代码会导致冻结并耗尽内存。为什么它不给我memory error?
我记得,从我使用 Windows Vista/7 的日子开始,有一个名为 memclear 或 memclean 的工具可以通过调用 NT 垃圾收集 API 来释放一些内存。可能它也清除了缓存。很多时候,当我使用 Ubuntu 时,系统会在一段时间后停留在几 GB 分配的内存,而当我执行诸如图像编辑之类的内存密集型任务时,我必须等待很长时间才能交换额外的 GB。
有没有办法强制内核 GC 之类的东西释放真正没有使用的内存?(当我启动时,内存消耗小于1GB)
如何在特定内存地址加载内核驱动程序?
如何使用以下方法完成?
insmod或modprobe我最近读到的一句话说:“大部分页表未使用,充满了无效条目。这是一个很小的 16KB 地址空间。想象一下 32 位地址空间的页表和所有潜在的浪费空间! ”
这表明 32 位地址空间大于 16KB 地址空间,这是令人困惑的,因为 32 位明显小于 16KB
我正在阅读这篇关于从我的新 Linux VM 中清除缓冲区/缓存的文章,因为它们占用了我 1/3 的 RAM,所以我运行了这个:
sync; echo 1 > /proc/sys/vm/drop_caches
这立即解决了这个问题,所以我要把它添加到我的 cronjob 中。文章说要创建一个clearcache.sh包含内容的文件:
#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"
Run Code Online (Sandbox Code Playgroud)
怎么了sync?不需要运行它才能工作吗?为什么在 cronjob 中回显 echo 会运行该命令?我在命令行上尝试了这个,正如预测的那样,它只是回显了命令。
# echo "echo 3 > /proc/sys/vm/drop_caches"
echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
这是我不知道的某种神奇的 cron 功能吗?