背景

在编译 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空间以解决这个编译问题

备注:下列操作都需要超级用户权限

参考:

解决

执行命令并观察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)的更多相关文章

  1. vs2010查看quartz.net 2.1.2的源码时其中一报错的解决方法

    问题: 使用vs2010查看quartz.net 2.1.2的源码时,报错: ..\Quartz.NET-2.1.2\server\Quartz.Server\Quartz.Server.2010.c ...

  2. VS反编译查看源码时,会把类实现的所有接口都直接显示

    今天在看ArrayList,发现一个很有意思的问题.从VS里反编译看,ArrayList继承了ICollection. IEnumerable.IList和ICloneable,而IList又继承了I ...

  3. CentOS命令登录MySQL时,报错ERROR 1045 (28000):

    CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解 ...

  4. 记录编译JDK11源码时遇到的两个问题

    执行make all报错信息: 错误一 /src/hotspot/share/runtime/arguments.cpp:1461:35: error: result of comparison ag ...

  5. 手动编译源码安装包报错 fatal error:cruses.h: no such file or direcrory

    很明显是缺少cruses.h这个文件,但是用yum搜索又搜不到,可能是我的yum源的库包太少的原因吧. 后来多方查找,发现cruses.h这个头文件属于ncurses模块,需要安装ncurses-de ...

  6. 编译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 ...

  7. 编译gcc5.1.0时的报错

    编译安装gcc5.1.0时出现如下报错: configure: error: error verifying int64_t uses long long 这是由于没有安装gcc_c++导致的,安装下 ...

  8. Django源码安装xadmin报错Apps aren't loaded yet.

    环境:python2.7, django1.9 1.报错django.core.exceptions.AppRegistryNotReady:Apps aren't loaded yet.如下图所示: ...

  9. 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的简单使用,但是当 ...

  10. mysql报错mmap(137428992 bytes) failed; errno 12,Cannot allocate memory for the buffer pool

    mysql以`systemctl start mysqld.service`的方式启动一段时间后发现突然无法启动,尝试重新启动也不能解决问题,排查问题时,先后通过`systemctl status m ...

随机推荐

  1. WEB服务与NGINX(15)-NGINX安装第三方模块

    1.nginx安装第三方模块 nginx安装第三方模块需要进行编译安装,安装方法如下: ./configure --prefix=/你的安装目录 --add-module=/第三方模块目录 ... 注 ...

  2. python教程3.3:字符和编码

    1.二进制 计算机只能存储和识别二进制,但是人类常用的字母.数字.汉字怎么用计算机存储和识别呢? 人类强行约定一个对应表,把数字.字母和数字进行对应上,这样就可以用二进制表示字母和数字了. 2.ASC ...

  3. 洛谷P3543 [POI2012] WYR-Leveling Ground

    题目描述 给定 \(n\) 个数和 \(a,b\) 每次可以选择一段区间 \(+a,-a,+b ,或 -b\),问最少操作几次能把它们都变成 \(0\).如果无解请输出 \(-1\). 样例输入 5 ...

  4. 国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线动态填充 word 文件

    PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel.兆芯.海光等).ARM(飞腾.鲲鹏.麒麟等)芯片架构. 在实际的Word文档开发中,经常需要自动填 ...

  5. k8s master不可以被调度,修改deploy配置让这个可以单独调度上去

    给两个节点添加标签,让pod调度上去,但是kubectl describe pod  发现报错了,因为master不可以被调度,kube002也是设置了污点禁止被调度了 Warning FailedS ...

  6. echarts(数据可视化图表)

    echarts饼图详细 echarts下载 https://echarts.apache.org/zh/index.html  echarts官网 http://www.isqqw.com/#/hom ...

  7. webapi中间件没有使用终结点中间件时的注意事项

    最小webapi 最小webapi默认的中间件配置是这样的 app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers( ...

  8. 我开源的H5商城2.0版本发布,强烈推荐

    简介 waynboot-mall 是一套全部开源的 H5 商城项目,包含运营后台.H5 商城前台和后端接口三个项目 .实现了一套完整的商城业务,有首页展示.商品分类.商品详情.sku 详情.商品搜索. ...

  9. 推荐几款卓越的 .NET 开源搜索组件

    前言 在当今日益数据化的世界中,信息的检索和搜索功能对于各种应用来说变得至关重要. 无论是电子商务网站.企业资源规划系统.还是内容管理系统,高效的搜索功能都是提升用户体验.促进业务发展的关键. 因此, ...

  10. k8s多集群切换:使用kubeconfig文件管理多套kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.kubeconfig文件 四.kubernetes(k8s)多集群切换 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux rele ...