【问题标题】:How to remove a data from main memory/RAM如何从主存储器/RAM 中删除数据
【发布时间】:2023-03-25 17:29:01
【问题描述】:

有没有办法从 Linux 的主内存中删除特定数据?所以必须再次从硬盘中取出数据

【问题讨论】:

  • 这不是代码问题
  • 您所说的“特定数据”是什么意思?对于 C 或任何较低级别的语言,您始终可以在 free'ing 之前用零填充内存的特定部分。此外,您可以修补 Linux 内核,或者特别是内存管理器来为您执行此操作。我猜。
  • 关于通用计算硬件和软件的问题对于 Stack Overflow 来说是无关紧要的,除非它们直接涉及主要用于编程的工具。您可以通过Super User 获得帮助。
  • linux 提供刷新交换内存数据的功能。命令 [#] 同步;回声 3 > /proc/sys/vm/drop_caches;对于特定的内存区域,您可能需要编写代码。
  • 那些错误地抱怨这是题外话的人需要问自己,除了编程或对程序的深入了解之外,目标在什么情况下才有意义 - 即,您还能具体知道特定数据在哪里位于内存中?希望有人有 mmap() 让你可以在 /proc 中看到它?

标签: linux memory-management linux-kernel


【解决方案1】:

这不是删除特定的数据,而是从 linux 缓存中删除所有数据。 (我假设这就是您希望 linux 将文件从硬盘重新加载到主内存时的意思)。

sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"

链接:How to clear memory cache on linux

另外,我向 Mohit M. 道歉,因为他在我之前的评论部分回答了这个问题。

【讨论】:

    【解决方案2】:

    您可以随时更改您的应用程序以使用 O_DIRECT 标志,该标志绕过页面缓存并从 diskc 获取文件以进行特定的读取调用。现在它可能不适用于所有情况(尤其是在堆叠块设备等情况下),在这种情况下,您应该像我之前解释的其他情况一样坚持使用 drop_caches。

    【讨论】:

    • 为什么是 -1 ?没有意见?
    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 2020-08-28
    • 2019-07-09
    • 2012-04-10
    • 2023-01-10
    • 2011-08-26
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多