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

相关推荐
fanzhonghong1 小时前
javaWeb开发之前端实战(Vue工程化+ElementPlus)
前端·javascript·vue.js·后端·spring
Kapaseker1 小时前
Compose 动画 — 显隐的艺术
android·kotlin
openKaka_1 小时前
completeWork:真实 DOM 是在哪里被创建的
前端·javascript·react.js
黄林晴1 小时前
Android官方发布 AppFunctions,让系统AI直接调用你的APP
android·agent
希冀1231 小时前
【CSS学习第六篇】
前端
Python大数据分析@1 小时前
说说Markdown为什么不会被HTML取代
前端·html
史迪仔01121 小时前
[QML] Qt5/6图像色彩空间处理
开发语言·前端·c++·qt
白嫖叫上我1 小时前
Vue3+iconfont图标选择器封装
前端·vue
ID_180079054731 小时前
淘宝店铺所有商品 API 接口:核心能力与数据返回参考
java·服务器·前端