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 和简单调整也不需要他们了。

相关推荐
福兮说4 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理5 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆6665 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)5 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan6 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_7 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒7 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技7 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu8 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
默_笙8 小时前
🛴 从散件到整机:DeepAgents 与 Agent 身上预留的那些"插槽"(前置介绍)
前端·javascript