一、出错原因
容易发生在编译安卓6.0以上版本时出现,也跟电脑配置Linux系统时SWAP空间分配过少有关系,常发生在Linux Ubuntu上,在编译占用内存巨大的项目如Android时就可能出现。常出现错误代码提示:errno12: Cannot allocate memory。意思是OpenJDK申请到的内存不足,无法进行后续编译,解决办法有三个:
1、通过free -h
命令确认自己电脑的SWAP空间大小,看空间大小是不是足够;
2、在SWAP空间分配合理的情况下可以尝试增加内存条;
3、调整JVM的堆内存大小,因为JVM程序启动时可能会申请比较大的内存,而你物理内存本身又不是很大的情况下就可能出问题。
第三点我没有尝试过,下面重点说明第1点的解决办法。
二、分配重新分配SWAP分区大小
总共分为几部,具体如下:
1. 查看SWAP大小
执行如下命令查看swap空间初始分配大小:
$free -h
可以看到如下图所示情况:
未分配好的图片找不到了,上面的是我已经分配好SWAP空间的图片。
2. 创建SWAP文件及分配大小
这里使用自己创建SWAP文件,名字可以随便取,为了方便我就取成SWAPf