Python 计算后 RAM 和交换内存没有释放?

Python 计算后 RAM 和交换内存没有释放?

我有 Ubuntu 21.04,前段时间开始遇到一个特殊问题。我经常运行 Python 程序,有时重复运行相同的程序而没有任何区别。但一段时间以来,我的电脑有时会死机。

我刚刚运行了一些内存密集型 Python 脚本,同时打开了系统监视器屏幕。我注意到,已用 RAM 和交换内存比例会稳步增加。在使用的 RAM 达到约 95%(交换为 100%)后,我终止了该进程。但两个内存仍然满了!

我不明白,系统不是应该在进程完成后释放内存吗?这是一个错误吗?我该如何释放它?

$ free -h
              total        used        free      shared  buff/cache     available
Mem:          7,2Gi       6,5Gi       281Mi        20Mi       362Mi       378Mi
Swap:         2,0Gi       2,0Gi       1,0Mi
$ ps -ao comm,%mem | sort -rnk2,2 | head
python          72.4
gedit            0.6
Xorg             0.4
sort             0.0
python           0.0
python           0.0
ps               0.0
head             0.0
gnome-session-b  0.0
COMMAND         %MEM

答案1

一个可能的解决方法是向您的系统添加更多交换:

$ free -h
              total        used        free      shared  buff/cache     available
Mem:          7,2Gi       6,5Gi       281Mi        20Mi       362Mi       378Mi
Swap:         2,0Gi       2,0Gi       1,0Mi

2G 的交换空间不够。我们将其增加到 4G。

首先,检查一下...

确认sysctl vm.swappiness= 60。

如果其中一个/两个swapon -sgrep -i swap /etc/fstab显示“/swapfile”,则执行以下操作:

在里面terminal...

sudo swapoff -a           # turn off swap
## create the new /swapfile; this will overwrite any existing file
head -c 4G /dev/zero | sudo tee /swapfile  

sudo chmod 600 /swapfile  # set proper file protections
sudo mkswap /swapfile     # init /swapfile
sudo swapon /swapfile     # turn on swap
free -h                   # confirm 8G RAM and 4G swap

编辑/etc/fstab,使用sudo -H gedit /etc/fstabsudo pico /etc/fstab

添加此/swapfile/etc/fstab并确认没有其他“交换”行存在:

/swapfile  none  swap  sw  0  0

最后,重新启动并验证操作。

相关内容