Android12源码编译失败,可能交换空间不足

1、交换分区

在Linux系统中,交换分区(Swap Partition)是一块独立的硬盘空间,用于存储内存中暂时不被使用的数据,以及在物理内存不足时,将不常用的数据移至交换分区以释放物理内存。换句话说,交换分区可以作为虚拟内存的一部分,用于提供额外的内存空间。

主要作用包括:

虚拟内存扩展: 允许系统将不活跃的进程或页面从物理内存移到交换分区,以腾出空间供其他活跃进程使用。这有助于避免内存不足导致系统崩溃或变慢。

内存回收: 当系统中的物理内存不足时,操作系统会将一些数据写入交换分区,以便在需要时将其读回物理内存。这种过程被称为交换(Swap)。

支持休眠: 交换分区还用于支持系统的休眠(Hibernate)功能。在休眠时,系统将当前内存的内容保存到交换分区,以便在唤醒时能够恢复到先前的状态。

创建和配置交换分区是在Linux系统安装时进行的,通常会在硬盘上划分一块特定大小的分区作为交换分区。系统管理员也可以在运行时手动添加、删除或修改交换分区。

一些重要的命令和文件:

swapon:用于激活交换分区。
swapoff:用于关闭交换分区。
/etc/fstab:包含了系统启动时自动激活交换分区的配置信息。
请注意,虽然交换分区在一些情况下对系统性能有帮助,但过度使用交换分区可能会导致系统性能下降。因此,在合适的情况下进行适度的交换配置是重要的。

2、编译Android12源码时,提示需要16G左右的内存

在Android源码编译的过程中,交换分区(Swap Partition)主要有两个作用:

扩展内存:
编译Android源码是一个资源密集型的任务,可能需要大量的系统内存。当系统的物理内存(RAM)不足时,交换分区充当了扩展内存的作用。
当编译过程中需要更多的内存,而物理内存不足以容纳所有的数据时,系统将一些不活跃的数据或页面写入到交换分区中,以便释放物理内存供其他活跃进程使用。
虽然使用交换分区可以避免因内存不足而导致编译失败,但是由于交换分区是在磁盘上的,其速度相对较慢,因此可能会导致编译速度变慢。

防止内存耗尽:
编译大型项目时,可能会消耗大量的内存。如果物理内存耗尽,系统将无法继续执行任务,并可能导致系统崩溃。
通过使用交换分区,系统可以将一些不活跃的数据移到磁盘上,从而释放出物理内存,防止内存耗尽。

虽然交换分区在某些情况下对于编译大型项目是有帮助的,但请注意,使用交换分区可能会导致编译速度减缓,因为磁盘速度相对较慢。在确保系统具有足够物理内存的情况下,最好的做法是避免过度使用交换分区。如果可能的话,考虑增加系统的物理内存以提高编译性能。

3、查看是否已经存在交换空间

free -m

查看swap详情

swapon -s

4、已存在交换空间,但是交换空间不足

执行下面脚本,创建20G交换空间

#!/bin/bash

# 停用当前的交换空间
sudo swapoff -v /swapfile

# 调整交换文件的大小(假设原始大小为10GB)
sudo dd if=/dev/zero of=/swapfile bs=1M count=20480 status=progress

# 更新交换文件的文件系统
sudo mkswap /swapfile

# 启用交换文件
sudo swapon /swapfile

# 将交换文件的信息写入fstab以确保在启动时自动加载
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab

# 显示交换空间信息
echo "已将交换空间扩展到 20GB。"

# 查看交换空间信息
free -h

注:授予脚本可执行权限

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄黄黄油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值