You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04+OpenJDK11环境启动Android Studio报SIGSEGV错误

问题成因分析

从崩溃日志可以定位到错误发生在JVM的Metaspace内存分配逻辑中,具体成因如下:

  1. 你使用的OpenJDK 11.0.10存在已知的Metaspace并发分配bug,在多线程加载类、内存压力较大的场景下,Metaspace空闲块链表的管理逻辑会出现竞态条件,触发段错误(SIGSEGV)。
  2. 你的设备只有3G运行内存,Android Studio默认的堆内存配置加上系统本身的内存占用,会导致JVM内存压力偏高,大幅提升了上述bug的触发概率,所以不仅启动AS会崩溃,编译Java代码时也会偶现相同错误。
可行解决方案
  • 升级JDK版本
    将系统全局OpenJDK和Android Studio使用的JRE都升级到11.0.16+或者17 LTS版本,上述Metaspace分配bug在11.0.12之后的JDK版本中已经被修复。系统JDK可通过apt命令直接安装openjdk-17-jdk,再用update-alternatives命令配置全局默认Java版本即可。
  • 调整Android Studio VM参数
    打开Android Studio安装目录下的bin/studio64.vmoptions文件,修改配置降低内存压力,参考配置如下:
    -Xms256m
    -Xmx1024m
    -XX:MaxMetaspaceSize=512m
    -XX:ReservedCodeCacheSize=512m
    -XX:+UseG1GC
    -XX:SoftRefLRUPolicyMSPerMB=50
    
    降低最大堆内存到1024M,增加Metaspace最大限制,避免频繁触发Metaspace扩容分配。
  • 优化系统内存环境
    关闭Ubuntu多余的后台进程、桌面特效,释放可用内存。如果系统没有配置swap或者swap空间小于2G,可新增2G swap交换空间,避免内存不足时触发JVM异常。
  • 配置Gradle使用高版本JDK
    打开Android Studio的设置页,进入Build, Execution, Deployment -> Build Tools -> Gradle,将Gradle JDK选择为你升级后的11.0.16+或17版本,避免编译时仍然使用旧版本JDK触发bug。

内容的提问来源于stack exchange,提问作者Tiany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:15:02