Android Studio 放着没怎么用,怎么也会越来越卡?

最近被 Android Studio 越来越卡的问题给绷住了,明明用的不多,大多数只是打开在后台放着,偶尔需要才过去做一些手动修改,但是经常是要用的是就发现这玩意变得贼卡,明明内存也没吃满,这就很奇葩了,干脆把它的日志丢给 AI 分析了下,结果发现:

大概率是 Copilot 插件和 Jetbrains AI 插件导致,虽然现在我很久没用它们了

首先通过日志可以发现,Copilot 和 JetBrains AI 都不是我用了才工作,而是两个插件自己就一直就在工作,不过这两玩意活跃的方式还不大一样:

  • 就算没任务,Copilot 也像是在不断参与编辑器 UI 状态刷新、维护语言服务和文件监听
  • JetBrains AI 是在持续做额度、激活状态、账号/许可证、配置拉取这类后台任务

日志可以显示"它们一直在活动",就算我没怎么去用它。

比如 Copilot ,主要就有 3 类日志:

检查栏/状态栏刷新

最明显的日志就是这一类:

bash 复制代码
ActionUpdater - 468 ms to grab EDT for InspectionWidgetContentExclusionAction#presentation@EditorInspectionsToolbar (com.github.copilot.status.InspectionWidgetContentExclusionAction) 
​
WARN - ActionUpdater - 3230 ms total to grab EDT 4 times to expand EditorMarkupModelImpl$StatusToolbarGroup#expandGroup@EditorInspectionsToolbar
​
WARN - ActionUpdater - 9817 ms total to grab EDT 5 times to expand ToolWindowHeader$2#expandGroup@ToolwindowTitle
​

这类记录反复出现,而且不是几次,是大量重复, 几千次,这些调用很多次都要抢 EDT,也就是 UI 主线程,然后它一直在工作,也就直观导致了 "我没干什么,但 IDE 还是越来越黏" 的情况,从日志上看:

  • com.github.copilot.status.InspectionWidgetContentExclusionAction 是 Copilot 在编辑器检查工具栏上的一个动作
  • ActionUpdater 在刷新工具栏按钮、状态项时,会去调用它
  • 也就是可以这么理解,就算你没主动用 Copilot 聊天,它也在"参与编辑器当前状态的判断"

而且 freeze dump 里主线程 AWT-EventQueue-0 也是提示卡在:

arduino 复制代码
com.intellij.openapi.actionSystem.impl.ActionUpdater
com.intellij.util.containers.FList.get

另外 Copilot 还有一个维护自己的语言服务进程 ,这也是导致卡顿的元凶之一,在 freeze dump 里能看到:

arduino 复制代码
"BaseDataReader: output stream of copilot-language-server.exe" "BaseDataReader: error stream of copilot-language-server.exe" "copilot-language-server.exe" 

另外就是 Copilot 维护文件监听器和项目级资源,在日志里还有这类内容:

bash 复制代码
com.github.copilot.mcp.service.McpFileListenerService$startWatchingConfigFile... com.github.copilot.copilotInstructions.service.CopilotInstructionsFileListenerService$startWatchingConfigFile... 

在关闭项目时还有:

arduino 复制代码
ProjectCloseListener - Cleaning up session ID for closed project: ... File watcher stopped during disposal 

也就是它有项目级 session 生命周期管理,即使不用,但是项目开多了,就会有越多 session 监听环境和项目状态变化 。

另外一个是 JetBrains AI 这这边 ,就算你不用,它也是一直在工作,最典型的是这些周期性检查 quota / 配额 / refill 状态

sql 复制代码
QuotaManager2Impl - Updating quota refill state QuotaManager2Impl - Quota update requested QuotaManager2Impl - New quota state is: Available(...) QuotaManager2Impl - Quota info is ... trying to update it every 6 minutes 

还有大量这种重复错误:

vbnet 复制代码
New quota refill state is: Error(exception=com.intellij.ml.llm.core.quota.ResultDoesNotMatchConditionException...) 

这里最关键的还不是错误本身,而是"它一直在重试",从时间上看,很多记录是按固定间隔不断出现的:

  • 09:45:31
  • 09:46:03
  • 09:46:35
  • 09:47:07
  • 09:47:39
  • 09:48:11

另外插件也会一直维护 AI 激活、许可证、账号、配置状态,在 freeze dump 里能看到很多 com.intellij.ml.llm 的活跃协程和状态对象,比如:

kotlin 复制代码
com.intellij.ml.llm.activation.state.impl.AiaActivationManagerImpl com.intellij.ml.llm.matterhorn.activation.state.junie.data.IdeLicenseStore com.intellij.ml.llm.matterhorn.activation.state.junie.data.JbaUserStore com.intellij.ml.llm.matterhorn.activation.state.junie.data.AieProvisionStore 

还有:

复制代码
com.intellij.ml.llm.core.chat.services.AIAssistantServiceApplicationScope com.intellij.ml.llm.core.quota.QuotaManager2Impl 

这说明 JetBrains AI 也不只是一个"打开聊天窗口才初始化"的存在,它也是应用级别就有常驻服务,而且这些线程很多显示为 Active。

最夸张的一个日志,.duration 文件内容是 21781 ,也就是约 6 小时,日志显示就是卡在:

swift 复制代码
"AWT-EventQueue-0" prio=0 tid=0x0 nid=0x0 runnable
     java.lang.Thread.State: RUNNABLE
​
    at com.intellij.util.containers.FList.get(FList.java:37)
    at com.intellij.util.containers.ContainerUtil$2.get(ContainerUtil.java:389)
    at java.base@21.0.10/java.util.AbstractList$Itr.next(Unknown Source)
    at com.intellij.openapi.actionSystem.Presentation.doFirePropertyChange(Presentation.java:556)
    at com.intellij.openapi.actionSystem.Presentation.fireObjectPropertyChange(Presentation.java:551)
    at com.intellij.openapi.actionSystem.Presentation.setIconSupplier(Presentation.java:320)
    at com.intellij.openapi.actionSystem.Presentation.copyFrom(Presentation.java:618)
    at com.intellij.openapi.actionSystem.Presentation.copyFrom(Presentation.java:593)
    at com.intellij.openapi.actionSystem.impl.ActionUpdater.applyPresentationChanges(ActionUpdater.kt:116)
    at com.intellij.openapi.actionSystem.impl.ActionUpdater.expandActionGroup$lambda$0(ActionUpdater.kt:253)
    at com.intellij.openapi.actionSystem.impl.ActionUpdater$computeOnEdt$deferred$1.invokeSuspend$lambda$0(ActionUpdater.kt:453)
    at com.intellij.openapi.application.ActionsKt.runReadAction$lambda$0(actions.kt:25)
    at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runReadAction(NestedLocksThreadingSupport.kt:855)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:1064)
    at com.intellij.openapi.actionSystem.impl.ActionUpdater$computeOnEdt$deferred$1.invokeSuspend(ActionUpdater.kt:452)
​

所以很明细是编辑器检查栏 / 工具栏刷新时,某些插件动作也被一起计算,结果把主线程拖慢了,主线程长期陷在 UI action 更新链路里,导致 Studio 冻结。

所以问题核心在于现在的 AI 插件,它们静默的情况下貌似也在持续工作,甚至不知不觉给你搞出来 freeze ,另外 Gemini 的我没试,但是结论很明显,卸载 JetBrains AI Chat 和 Copilot Plugin ,因为现在都用 Copilot CLI 了,谁还在 Android Studio 里用插件。

自从删了之后,明显 Android Studio 表现好了不少,现在放了两天也没出现越放越卡的情况,所以如果你的 Android Studio 用起来特别卡,而且没怎么用,只是光放着就越放越卡,那么可以尝试把这些没用的插件都卸了,现在的 AI 情况, IDE 用来做 Review 和简单调整也不需要他们了。

相关推荐
谭光志2 小时前
Vibe Coding 时代,程序员该何去何从
前端·后端·ai编程
私人珍藏库3 小时前
[Android] 会计快题库 -财会职称考试刷题学习
android·人工智能·学习·app·软件·多功能
仿生狮子4 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
kyriewen4 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
Highcharts.js4 小时前
软件开发公司为什么选择 Highcharts?
前端·前端框架·echarts·数据可视化·技术选型·highcharts·图表工具
阿祖zu5 小时前
企业 AI 转型之痛,个人提效十倍不止,组织效率仍止步不前?
前端·aigc·agent
摇滚侠6 小时前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
酸梅果茶7 小时前
【6】lightning_lm项目-LIO 前端 -点云预处理模块
前端·slam
Hilaku7 小时前
前端大裁员背后的恐慌:我们还剩什么底牌?
前端·javascript·程序员
咖啡无伴侣7 小时前
unplugin-auto-import 使用详解+面试高频考点
前端·架构