解决macOS IntelliJ IDEA 卡顿问题

news/2024/11/24 14:09:56/

写在前面的话1:我在撰写这篇博客时候,所用的IntelliJ IDEA版本是IntelliJ IDEA 2022.3.3 (Ultimate Edition),你需要知道可能对于不同的IntelliJ IDEA版本会有一定的差异

写在前面的话2:如果我这篇博客可以帮助到你,请给我一个免费的赞和收藏,谢谢

问题描述

我遇到的卡顿问题主要体现在编辑代码时,输入中文时,cpu使用率飙升到100%,并且中文已经在键盘中打完了,但是展示到IntelliJ IDEA页面上还需要5秒以上,已经卡到没办法做研发工作了。

一些相关的因素

在特别卡的时候,我有更换过一次项目。我在做这个项目之前,虽然也卡,但是不会类似于这个项目这么卡。
但同时我在这期间有升级过macOS的系统版本和IntelliJ IDEA的版本,变量因素很多,加大了问题排查定位的难度。

排查思路

我以前很喜欢写流水账,但是这次来来回回花了我好几个月才解决,所以我已经回忆不起来我到底是怎么一步一步排查的了,我尝试写一些我还能想起来的作为排查思路

检查内存、硬盘、cpu使用率

这是我最开始的考虑,macOS上有一个系统应用,叫“活动监视器“,这里面可以比较清晰的看到IntelliJ IDEA的cpu、内存、硬盘、网络的使用情况,当然你也可以在终端中使用top或者htop来确认。
通过我的观察,我发现我输入中文的时候,我的八个很容易就达到了100%,CPU使用率轻轻松松超过400%

如果你使用IntelliJ IDEA开发程序,那么Java应用的卡顿问题如何处理,你应该是比较熟悉的,对吧?但是如果没有源码,我们直接去查IntelliJ IDEA的线程信息其实帮助也不是很大,我稍微花了一点时间在网络上翻找了一些帖子。

IntelliJ IDEA其实是有自己的分析工具,其位置在于【顶栏->Help->Diagnostic Tools->Activity Monitor】

说个题外话,不建议安装IntelliJ IDEA的中文语言包,因为互联网上大量文档主要还是用英文来写的,我在解决这个IntelliJ IDEA卡顿问题的时候也在IntelliJ IDEA自己的论坛看了很多帖子,如果你长期使用中文语言包,对于一些词汇太陌生会导致自己处理问题比较麻烦。

从这个工具里面咱们就可以看到具体什么进程导致CPU的高占用,对于进程名不熟悉的,借助于Google也可以很快了解具体是做什么的。

不同的使用场景下,会存在不同的原因,并且因为IntelliJ IDEA还支持了插件,所以导致卡顿的原因更是不计其数,但只要你懂得如何去排查问题,这个事儿就变得没有那么困难了。

一个一个的禁用插件来排查

这个方法是很多人都有提到的,并且在实际应用上是真的有效果!如果你安装的插件比较多,那么请一个一个的disable掉,利用排查法找到具体是哪个插件所导致的,插件越多理论上时间会比较长,你也可以选择以五个为单位快速定位一个大致的范围。

常见的一些解决方案

修改IntelliJ IDEA的内存

放到第一位肯定是相当重要的,但IntelliJ IDEA在扫描、编译、处理各类问题的时候,确实是需要很大内存的。我个人目前是给到了6G。

网上有各种各样教你修改配置文件的方法,但是IntelliJ IDEA自己就提供了这样的功能,你直接需要点击【顶栏->Help->Edit Custom VM Options】就可以在IntelliJ IDEA编辑框打开一个以.vmoptions结尾的文件。如果之前已经有-Xmx属性那么就改一下,如果没有就新起一行加上即可,如果你想和我一样配置成6G,那么修改属性值应该是-Xmx6144m即可,这表示最小堆内存位6G

使用更高版本的jdk以及IntelliJ IDEA的新界面

java 原来使用的是OpenGL,但是macOS从Mojave开始启用了新的Metal框架,jetbrains对此也是早早布局,我这里放两个链接供你了解更多的内容:

  1. Metal for IntelliJ Platform | The JetBrains Platform Blog
  2. https://youtrack.jetbrains.com/issue/JBR-745/Improve-java2d-rendering-performance-on-macOS-by-using-Metal-framework

当你的分辨率非常高,或者是显示器非常的多时,渲染的压力就会越大,cpu就会飙升,IntelliJ IDEA也会变卡。截止目前IntelliJ IDEA已经发布了New UI,虽然被标记为Beta,但从我个人使用情况来说,我还没遇到过问题。反而新版本的UI更让我聚焦我的开发工作,用了几天很快就适应了。
简单来说,你需要jre 17及以上版本且IntelliJ IDEA版本保持为最新版即可。

插件导致的卡顿

git插件

排查思路很简单,就是我在上一个章节中提到的一个一个的禁用插件来排查,如果你已经确定是IntelliJ IDEA的git插件导致的卡顿,但是你又想像我一样继续使用这个git插件,那么应该怎么解决呢?

这个问题我是偶然一次浏览到的,macOS 下 Intellij IDEA 变得特别卡该如何解决? - 知乎 其中第一个高赞回答就是解决方法,其实就是.gitignore文件设置不合理,导致git插件索引了大量无意义的文件,我目前维护的这个项目git下同时存放了多个子系统的代码,文件数量和层级都非常的夸张。

我在我本地修改了.gitignore文件的内容,去掉了一些我不需要管的文件夹后,git插件导致的IntelliJ IDEA卡顿问题就迎刃而解了。

其他插件

  • 如果你确定你不需要,比如alibaba的p3c检查,或者是一些其他的检查扫描类插件,可以disable的都尽量卸载即可。
  • 对于一些比较小众的插件,你可以尝试通过GitHub直接联系作者以寻求解决方案。

http://www.ppmy.cn/news/43259.html

相关文章

TP5 解决如何实现生成并导出Word文档功能

今天连续更新两篇文章,上一篇讲了一下如何生成PDF并导出文件的功能 接下来我们就来拼一拼怎么实现生成并导出word文档的功能 话不多说 我们直接上流程: 1.下载安装phpword插件:composer require phpoffice/phpword 2.安装成功后该插件在我们项…

再探pytorch的Dataset和DataLoader

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052本文从分类、检测、分割三大任务的角度来剖析pytorch得dataset和dataloader源码,可以让初学者深刻理解每个参数的由来和使用,并轻松自定义dataset。思考&#x…

day29—选择题

文章目录1.HashSet子类依靠什么方法区分重复元素(C)2.以下代码在编译和运行过程中会出现什么情况(A)3.有这么一段程序,执行的结果是(C)1.HashSet子类依靠什么方法区分重复元素(C&…

雪花算法ID冲突问题与解决方案

分布式部署应用项目采用雪花算法生成ID有冲突问题: 方案一:给应用分配随机 datacenter-id和 worker-id 如下图: global-config:db-config:logic-delete-field: del_flaglogic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-…

Python 小型项目大全 41~45

四十一、幸运星 原文:http://inventwithpython.com/bigbookpython/project41.html 在这个碰运气游戏中,你掷骰子来收集星星。你掷得越多,你能得到的星星就越多,但是如果你得到三个头骨,你就失去了一切!这款…

【并发编程】ConcurrentHashMap源码分析(一)

ConcurrentHashMap源码分析CHM的使用CHM的存储结构和实现CHM源码put源码分析initTable 初始化tabletreeifyBin()和tryPresize()transfer 扩容和数据迁移高低位的迁移ConcurrentHashMap是一个高性能的,线程安全的HashMapHashTable线程安全,直接在get,put方…

Minikube安装、运行

1.Minikube是什么 本地的k8s集群,方便开发者学习k8s。 2.安装的前提条件 2个CPU货以上。2G内存或以上。20G磁盘或以上。可以链接互联网。安装docker(官网说或者一个虚拟环境,这个不考虑)。 3.官网地址 minikube start | minik…

2016-2017 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2016)题解

2016-2017 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2016) A - Artwork 题目描述: 给定N*M的网格,给出Q次询问,每次询问都给出一个小矩阵,保证每个矩阵要么长为1,要么宽为1,将网格中矩阵部…