解决:编译安卓源码时 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 ...
随机推荐
- Golang ETCD包的安装使用 golang安装etcd第三方库clientv3 报错 解决
目录 ETCD 官网 视频地址 课件资料 ETCD 日志收集项目 为什么要自己写不用ELK? 项目的架构 上节课项目进度 etcd介绍 安装etcd windows安装 Ubuntu(linux系统) ...
- 在Linux下想要删除一个目录需要怎样的权限
场景一 在Home目录下创建一个目录dirtest,然后使用chmod 333 dirtest修改目录权限.这时候dirtest的权限为d-wx-wx-wx,如果执行rm -r dirtest可以进行 ...
- 如何使用Splashtop在家里进行有效的新人入职培训
编辑搜图 请点击输入图片描述 今天的新闻有点不简单,不得了. 简而言之,利用Splashtop可以在家里进行有效的新人入职培训.最棒的地方就在于--两个用户可以远程访问同一台计算机,并且可以看到彼此的 ...
- selenium 滚动截图参考
Selenium本身并不直接支持滚动截图,但是你可以通过编程方式实现滚动截图.下面是一个Python的例子,使用Selenium和PIL库实现滚动截图: from selenium import we ...
- 低代码与 Echarts 融合:开启智能可视化的创新浪潮
前言 在当今数字化时代,数据的价值愈发凸显,企业和组织需要有效地利用数据来作出战略决策和优化业务流程.可视化是一种强大的工具,可以将复杂的数据以直观的方式展现出来,帮助用户更好地理解和分析数据.近年来 ...
- Vue cli单文件组件的使用
整个项目是一个主文件index.html,index.html中会引入src文件夹中的main.js,main.js中会导入顶级单文件组件App.vue,App.vue中会通过组件嵌套或者路由来引用其 ...
- 修改java版本环境变量不生效
修改java版本环境变量不生效 起因 先上图说明问题(电脑含有多个java版本,因为需要维护很老的项目,需要切换至以前的java版本,当然也可以不用修改环境变量,直接指定) 环境变量配置 正常 jav ...
- 【分享】FFmpeg桌面神器,集多种功能于一身,超级好用,不用命令行!
在媒体处理上,市面上有很多软件可以选择,在众多软件里面 FFmpeg 是比较独特的一款,直接选择 FFmpeg 硬核命令行工具的朋友相对较少,大多时候只是被集成在各样的软件里,如果单独拿出来使用,不少 ...
- 薄书的pytorch项目实战lesson49-情感分类+蹭免费GPU
项目来源 B站视频pytorch项目实战-情感分类问题 github lesson49-情感分类实战 1 实验环境 在这里和大家推荐一个学习ML和DL的一个实验运行平台,就是google的Colabo ...
- 第一次线上 OOM 事故,竟和 where 1 = 1 有关
这篇文章,聊聊一个大家经常使用的编程模式 :Mybatis +「where 1 = 1 」. 笔者人生第一次重大的线上事故 ,就是和使用了类似的编程模式 相关,所以印象极其深刻. 这几天在调试一段业务 ...