解决:编译安卓源码时 JDK 报错 error='Not enough space' (errno=12)
背景
在编译 Android 10 代码的时候,OpenJDK发现报错:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(.., .., 0) failed; error='Not enough space' (errno=12)
原因:运行或编译占用内存巨大的大软件大项目的过程中可能会出现 errno12(申请内存不足)
先执行命令
free -m查看内存是不是还有 最主要的是 看有没有交换空间 swap (这很重要)如果没有交换空间 或者交换空间比较小 要先安装交换空间 或者增大空间
下面介绍在Ubuntu 18.04上通过扩大swapfile来增加swap空间以解决这个编译问题
备注:下列操作都需要超级用户权限
参考:
- https://blog.csdn.net/weixin_44105991/article/details/91320644
- https://blog.csdn.net/qq_31851107/article/details/109469331
解决
执行命令并观察swap空间是否存在和大小:
# free -h
total used free shared buff/cache available
Mem: 62G 11G 49G 5.3M 800M 49G
Swap: 2.0G 790M 1.2G
# swapon -s
Filename Type Size Used Priority
/swapfile file 2097148 806584 -2
删除swapfile(如果之前有)
如果已经存在swapfile(例如:/swapfile),执行下面的命令删除
swapoff /swapfile #unmount swap文件
rm -rf /swapfile
再执行free和swapon -s ,检查是否依然存在swap空间
创建更大的swapfile
创建一个16G的 /swapfile:
dd if=/dev/zero of=/swapfile bs=1M count=16384
其中,16384=16×1024×1M,即创建了一个16G的swapfile。
if=指定输入文件名,/dev/zero 代表 空
of=指定输出文件名
bs=bytes:同时设置读入/输出的块大小为bytes个字节
count=blocks:此为块大小,等于以bs为单位指定的空间。
修改权限
chmode 0600 /swapfile
格式化
mkswap /swapfile
到这里,swapfile创建完毕
配置swap文件(如果之前没有)
一般系统都会有挂载swapfile,但是如果没有的话,就需要配置在系统启动时挂载swap空间:
vim /etc/fstab
在最末增加新的一行:
/swapfile none swap sw 0 0
启动swap空间
swapon /swapfile
可以执行 free -h ; swapon -s,看看swap空间大小
free -h
total used free shared buff/cache available
Mem: 62G 13G 28G 14M 20G 48G
Swap: 15G 0B 15G
swapon -s
Filename Type Size Used Priority
/swapfile file 16777212 0 -2
测试
重新编译自己的项目,看看是否解决了OpenJDK的errno=12的问题。
解决:编译安卓源码时 JDK 报错 error='Not enough space' (errno=12)的更多相关文章
- vs2010查看quartz.net 2.1.2的源码时其中一报错的解决方法
问题: 使用vs2010查看quartz.net 2.1.2的源码时,报错: ..\Quartz.NET-2.1.2\server\Quartz.Server\Quartz.Server.2010.c ...
- VS反编译查看源码时,会把类实现的所有接口都直接显示
今天在看ArrayList,发现一个很有意思的问题.从VS里反编译看,ArrayList继承了ICollection. IEnumerable.IList和ICloneable,而IList又继承了I ...
- CentOS命令登录MySQL时,报错ERROR 1045 (28000):
CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解 ...
- 记录编译JDK11源码时遇到的两个问题
执行make all报错信息: 错误一 /src/hotspot/share/runtime/arguments.cpp:1461:35: error: result of comparison ag ...
- 手动编译源码安装包报错 fatal error:cruses.h: no such file or direcrory
很明显是缺少cruses.h这个文件,但是用yum搜索又搜不到,可能是我的yum源的库包太少的原因吧. 后来多方查找,发现cruses.h这个头文件属于ncurses模块,需要安装ncurses-de ...
- 编译Twitter的Heron时一直报错“heron/bazel_configure.py", line 25, in <module> import semver ImportError: No module named semver”如何处理。
今天编译heron的时候,从官方git到的源码bazel_configure的时候一直报错如下: Traceback (most recent call last): File , in <mo ...
- 编译gcc5.1.0时的报错
编译安装gcc5.1.0时出现如下报错: configure: error: error verifying int64_t uses long long 这是由于没有安装gcc_c++导致的,安装下 ...
- Django源码安装xadmin报错Apps aren't loaded yet.
环境:python2.7, django1.9 1.报错django.core.exceptions.AppRegistryNotReady:Apps aren't loaded yet.如下图所示: ...
- SonarQube执行代码分析时,报错ERROR: Unable to create symbol table for : /**/*.java java.lang.IllegalArgumentException: Unsupported class file major version 55
若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11686633.html 起因: 最近正在尝试SonarQube的简单使用,但是当 ...
- mysql报错mmap(137428992 bytes) failed; errno 12,Cannot allocate memory for the buffer pool
mysql以`systemctl start mysqld.service`的方式启动一段时间后发现突然无法启动,尝试重新启动也不能解决问题,排查问题时,先后通过`systemctl status m ...
随机推荐
- vue-在公共icon封装组件里使用svg图标
1.安装svg-sprite-loader.package.json:"svg-sprite-loader": "^3.9.2", 2.build/webpac ...
- 路由跳转报错:Uncaught (in promise) NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated",...
记录一个路由跳转的报错: 将换成
- 6、Samba 文件共享服务
1.Samba 服务基础 SMB(Server Message Block),服务消息块 CIFS(Common Internet File System),通用互联网文件系统 Samba 项目:ht ...
- Lora训练的参数和性能
主要为了测试模型增加Lora模块后,参数量和训练速度的变化情况.结论:正常情况下,增加Lora模块是会增加参数量的,因此前向传播和反向传播的时间也会增加.但是,在大语言模型训练的情况下,因为基础模型本 ...
- uniapp去除button的边框
button { border: none !important; } button::after { border: none !important; }
- 2022最新的Centos6.10安装mysql8.0
一.系统源替换 1.备份系统源 (1)进入源的默认路径 cd /etc/yum.repos.d (2)查看一下 (3)备份 cp CentOS-Base.repo CentOS-Base-Back.r ...
- mini-centos7 环境安装部署,各种踩坑。。。
最小Linux系统,安装Java环境 想想就生气,去面试个运维,面试官让我上机装个centos7,还是个最小安装包连界面都没有,只有命令行模式,我都哭了,然后让把一些环境装一下,然后再部署个sprin ...
- java学习之旅(day.11)
static详解 static若在类中使用,就是修饰成员变量 static若在方法中使用,就是成员方法? static加在方法上叫静态方法,加在属性上叫做静态属性 package com.zhang. ...
- WPF绑定数据源到ListBox等selector的注意事项
如果使用CollectionViewSource绑定到控件上,会导致默认选择第一项,而使用List,SelectedItem就默认为空. 要避免默认选择第一项,就要设置 ListBox.IsSynch ...
- PasteSpider之appsettings.json中的Serilog的配置,分流不同日志层级的信息!
在实际使用Serilog中,我们通常会有不一样的需求,常见的比如 1.按照等级,高级哪个等级的才记录 2.记录文件每个多大,超过的划分到下一个文件中 3.不同等级的记录到不同的位置中 4.按照不一样的 ...