在 Linux 系统中,内存是指计算机用于存储和运行正在执行的程序和数据的地方。当应用程序启动时,它们会被加载到内存中以便 CPU 可以快速访问并执行它们。可用内存是指当前未被使用的内存。
交换空间是指操作系统将内存中不经常使用的数据写入磁盘的一种机制。当内存不足时,系统可以将一部分内存中的数据移动到交换空间中,以腾出更多的内存供其他应用程序使用。交换空间通常是由硬盘上的一个或多个特殊文件(称为交换文件)组成。
二、查看系统的可用内存和交换空间要查看系统上的可用内存和交换空间,可以使用以下命令:

1. `free` 命令:该命令以可读的方式显示系统的物理内存和交换空间信息。
```$ free -h```
该命令将以人类可读的格式(例如 GB、MB)显示可用内存、已使用内存、交换空间等信息。
2. `cat /proc/meminfo` 命令:该命令显示有关系统内存的详细信息,包括可用内存、缓存、交换空间等。
```$ cat /proc/meminfo```
可以通过查找关键词(如 MemAvailable、SwapTotal)来获取特定信息。
三、管理可用内存1. 释放内存:有时,系统上的某些进程可能会占用过多的内存,这会导致可用内存不足。要释放内存,可以尝试以下方法:
- 通过 `kill` 命令杀死占用内存较多的进程。
- 通过 `sudo service <service_name> restart` 命令重启某些服务,以释放它们占用的内存。
- 通过 `sudo sysctl -w vm.drop_caches=3` 命令清理文件系统缓存。
2. 调整内存分配:可以通过修改内核参数来调整系统分配给应用程序的内存量。
- 修改 `/etc/sysctl.conf` 文件,使用 `vm.swappiness` 参数来调整系统更倾向于使用交换空间还是可用内存。将其值设置为 0 表示系统更倾向于使用可用内存,值设置为大于 0 的更高值表示系统更倾向于使用交换空间。
```vm.swappiness=10```
- 修改 `/etc/security/limits.conf` 文件,使用 `vm.overcommit_memory` 参数来调整系统内存超额分配的策略。将其值设置为 0 表示系统不允许超额分配内存,值设置为 1 表示允许分配超过系统实际内存大小的内存。
```vm.overcommit_memory=0```
3. 监控内存使用情况:可以使用工具如 `top`、`htop` 来实时监控系统的内存使用情况,以及各个进程占用的内存量。
四、管理交换空间1. 创建交换文件:如果系统上没有交换空间或交换空间不足,可以通过创建交换文件来增加交换空间的大小。交换文件可以在硬盘上创建,然后被系统用作交换空间。
- 创建空文件并设置其权限:
```$ sudo fallocate -l <size> /path/to/swapfile$ sudo chmod 600 /path/to/swapfile```
其中 `<size>` 是交换文件的大小(例如,1G 表示 1GB)。
- 将文件格式化为交换文件:
```$ sudo mkswap /path/to/swapfile```
- 启用交换文件:
```$ sudo swapon /path/to/swapfile```
2. 调整交换空间大小:可以通过编辑 `/etc/fstab` 文件来调整系统启动时加载交换文件的大小。
- 打开 `/etc/fstab` 文件并添加以下行:
```/path/to/swapfile none swap sw 0 0```
其中 `/path/to/swapfile` 是你创建的交换文件的路径。
- 保存文件并重新加载 `/etc/fstab`:
```$ sudo swapon -a```
3. 调整交换空间使用策略:可以通过编辑 `/proc/sys/vm/swappiness` 文件来调整系统更倾向于使用交换空间还是可用内存。
- 打开 `/etc/sysctl.conf` 文件并添加以下行:
```vm.swappiness=<value>```
其中 `<value>` 是你想设置的 `vm.swappiness` 参数的值。
- 保存文件并应用设置:
```$ sudo sysctl -p```
最后
欢迎加入我们的嵌入式学习群!
作为这个群的一员,你将有机会与嵌入式系统领域的专业人士和爱好者们交流、分享经验和学习资源。群内涵盖了各种嵌入式系统的应用和开发,无论你是初学者还是经验丰富的专业人士,都能在这里找到志同道合的伙伴和有益的互动。无论你是对物联网、智能家居、工业自动化等领域感兴趣,还是希望分享你自己的项目和经验,我们的群都会为你提供一个广阔的交流平台。
更多学习资源在这里:扫码进群领资料