什么是活动内存和非活动内存

use*_*918 13 linux

什么是活动内存和非活动内存?我正在vmstat -aLinux机器上执行命令,我得到以下输出:

vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0 249900 4801880 2649428 8246152    0    0    42    31    0    0  4  0 95  0  0
Run Code Online (Sandbox Code Playgroud)

但我没有得到完全活跃和不活跃的记忆......你能详细说明吗?

Gan*_*har 20

"已使用"存储器有两种状态,"无效"和"有效".

活动内存是特定进程正在使用的内存.
非活动内存是分配给不再运行的进程的内存.

看到内存使用/proc/meminfo而不是vmstat -a

cat /proc/meminfo  
Run Code Online (Sandbox Code Playgroud)

您无需清除此非活动内存当系统重新启动时,此内存将自动消失,仍然如果您有大量非活动内存,则可以使用以下命令.

free && sync && echo 3 > /proc/sys/vm/drop_caches && echo "" && free
Run Code Online (Sandbox Code Playgroud)

  • 错,错,错![更好的信息](http://unix.stackexchange.com/questions/305606/linux-inactive-memory).这个答案与实际错误有关:"非活动内存[属于]不再运行的进程"错误",有两种状态的已用内存"错误,drop_caches用于清除非活动内存错误. (15认同)
  • 你救了我这个男人。我一直在寻找这种解决方案好几个星期了。我尝试了所有有关如何优化服务器的事情,而导致内存闲置的原因使我头疼。非常感谢您提供有关如何释放不活动内存的命令。现在,我恢复了大部分不活动的内存。 (2认同)
  • 非活动内存可能导致什么问题?OS是否会根据需要将它们分配给需要它们的进程,从而有效地使非活动内存与可用内存相同? (2认同)
  • 是的,当没有足够的可用内存时,操作系统会为进程分配不活动的内存。第一次,当我们启动应用程序时,操作系统会为其分配内存。当我们关闭这些应用程序时,分配给应用程序的内存不会被释放,而是将其标记为不活动。之后,如果您重新打开关闭的应用程序,则操作系统会将不活动内存标记为活动内存。这会提高速度。在某些情况下,例如当您有 8GB RAM 时,因为您只有 200MB 可用内存和 3GB 不活动内存,那么您的系统将变得无响应,在这种情况下释放未使用和不活动的内存是可行的。 (2认同)
  • @kubanczyk 随时编辑答案。感谢指出错误。 (2认同)