You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Android Studio运行应用时CPU占用过高的优化求助

Android Studio运行应用时CPU占用过高的优化求助

兄弟,我之前在Ubuntu 22.04上用Android Studio跑Jetpack Compose项目时,也碰到过几乎把CPU拉满的糟心事,结合你的配置和已经做的操作,给你几个亲测有效的优化方向,你可以挨个试试:

先从Gradle下手——这是CPU占用的重灾区

Gradle编译过程是出了名的吃资源,调整它的参数能立竿见影:

  • 打开项目根目录的gradle.properties文件,替换成以下参数:
    org.gradle.daemon=true
    org.gradle.parallel=true
    org.gradle.configureondemand=true
    org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=50
    
    给你解释下关键项:-Xmx4g给Gradle守护进程分配4G堆内存(你有32G内存完全够造),G1GC垃圾回收器比默认的更高效,并行构建能让你的4核CPU真正跑起来,减少单核心负载。

给Android Studio本身“减负”

AS默认的配置有时候会浪费不少资源,精简一下:

  • 禁用无用插件:打开File > Settings > Plugins,把和你当前开发无关的插件全禁用——比如你只用Jetpack Compose,那Flutter、C++、Unity这些插件直接关了就行,后台少跑点进程就少占CPU。
  • 调整AS的VM参数:点击Help > Edit Custom VM Options,修改成这些值:
    -Xmx6g
    -XX:MaxMetaspaceSize=1024m
    -XX:+UseG1GC
    -XX:SoftRefLRUPolicyMSPerMB=50
    -XX:CICompilerCount=2
    
    重点说下-XX:CICompilerCount=2:这个是限制JIT编译器的线程数,你的i5是4核,留2个给AS的编译器,剩下的核心留给系统和Gradle,避免核心抢用导致的CPU拉满。
  • 优化编译设置:去File > Settings > Build, Execution, Deployment > Compiler,勾选Compile independent modules in parallel,同时把Build process heap size调到2048MB左右。

针对Ubuntu系统的小调整

  • 降低Swappiness值:Ubuntu默认的swap策略会过早使用swap分区,你只有2G swap,频繁读写会拖慢系统还占CPU。打开终端执行:
    sudo sysctl vm.swappiness=10
    
    要永久生效的话,编辑/etc/sysctl.conf文件,在末尾加一行vm.swappiness=10,重启系统就行,这样系统会优先用你的32G物理内存,减少swap的消耗。
  • 关掉Gradle远程缓存:有时候Gradle会在后台同步远程缓存,悄悄占CPU。去File > Settings > Build, Execution, Deployment > Build Tools > Gradle,把Remote build cache改成Disabled,只用本地缓存完全够。

Jetpack Compose专属优化

Compose的预览和编译特性有时候会偷偷占资源:

  • 禁用不必要的Compose编译指标:去File > Settings > Languages & Frameworks > Android > Studio Experiments,把Compose Compiler: Enable compiler metricsCompose Compiler: Enable release compiler metrics都关掉,这些是用来分析编译性能的,平时开发用不上。
  • 关闭Compose预览自动刷新:如果你没在用到预览窗口,一定要把预览右上角的自动刷新按钮点成灰色,不然AS会实时编译预览内容,悄悄吃CPU。

最后几个应急小技巧

  • 清理AS缓存:点击File > Invalidate Caches...,选择Invalidate and Restart,有时候缓存损坏会导致编译过程异常占用资源,清完重启后会好很多。
  • 定位具体进程:如果以上操作都没用,打开终端运行htop,看看到底是java(Gradle守护进程)还是studio本身占CPU最高,这样能更精准地定位问题——比如如果是Gradle的问题,就再调大它的堆内存;如果是AS本身,就再精简插件。

我当时就是把这些点挨个调了一遍,CPU占用直接从90%+降到了40%左右,你可以先从Gradle参数和AS VM选项开始改,这两个是见效最快的。要是还有问题,咱们再接着排查!

火山引擎 最新活动