IntelliJ IDEA 卡成球了?

  1. 基于测试文件 idea.vmoptions 进行设置

  2. 重启电脑

  3. 启动后关闭所有不相关的项目( communicators 等等)

  4. 打开 Idea(测试时间)

  5. 打开大项目(测试时间)

  6. 检查 jstat -gcutil

  7. 打开两个微服务项目(测试时间)

  8. 检查 jstat -gcutil

  9. 返回大项目然后点击“刷新 Gradle 项目”按钮(测试时间)

  10. 检查 jstat -gcutil

jstat -gcutil

jstat 是 JDK 自带的工具,主要利用 JVM 内建的指令对 Java 应用程序的资源和性能进行实时的命令行监控,还包括对 Heap size 和垃圾回收状况的监控。它有许多选项来收集各种数据,但这里只会用到:

-gcutil :

-gcutil - Summary of garbage collection statistics.

S0: Survivor space 0 utilization as a percentage of the space’s current capacity.

S1: Survivor space 1 utilization as a percentage of the space’s current capacity.

E: Eden space utilization as a percentage of the space’s current capacity.

O: Old space utilization as a percentage of the space’s current capacity.

M: Metaspace utilization as a percentage of the space’s current capacity.

CCS: Compressed class space utilization as a percentage.

YGC: Number of young generation GC events.

YGCT: Young generation garbage collection time.

FGC: Number of full GC events.

FGCT: Full garbage collection time.

GCT: Total garbage collection time.

这个命令的输出结果如下:

S0     S1    E     O     M    CCS  YGC YGCT FGC  FGCT   GCT

89.70 0.00 81.26 74.27 95.68 91.76 40 2.444 14 0.715  3.159

在本文中,最重要的参数是 GC 事件( YGC 和 FGC )次数和收集时间( YGCT 和 FGCT )。

测试设置

笔者设置了四种不同的设置,为了好记,给它们起了不同的名字。

默认(灰色标识)

JetBrains 提供的默认设置:

-Xms128m

-Xmx750m

-XX:MaxPermSize=350m

-XX:ReservedCodeCacheSize=240m

-XX:+UseCompressedOops

Big(大)(红色标识)

给 Xmx 配 4096MB, ReservedCodeCacheSize 设置 1024MB,这已经是相当多的内存了:

-Xms1024m-Xmx4096m-XX:ReservedCodeCacheSize=1024m-XX:+UseCompressedOops

Balanced(平衡的)(蓝色标识)

Xmx 和 Xms 都分配 2GB ,这是相当平衡的内存消耗:

-Xms2g

-Xmx2g

-XX:ReservedCodeCacheSize=1024m

-XX:+UseCompressedOops

Sophisticated(复杂的)(橘色标识)

和上面一样, Xmx 和 Xms 都分配2GB,但是给 GC 和内存管理指定不同的垃圾回收器和许多不同的标志:

-server

-Xms2g

-Xmx2g

-XX:NewRatio=3

-Xss16m

-XX:+UseConcMarkSweepGC

-XX:+CMSParallelRemarkEnabled

-XX:ConcGCThreads=4

-XX:ReservedCodeCacheSize=240m

-XX:+AlwaysPreTouch

-XX:+TieredCompilation

-XX:+UseCompressedOops

-XX:SoftRefLRUPolicyMSPerMB=50

-Dsun.io.useCanonCaches=false

-Djava.net.preferIPv4Stack=true

-Djsse.enableSNIExtension=false

-ea

以上便是笔者的测试设置,为了执行该测试用例,还需要在~/Library/Preferences/IntelliJIdea15/下创建一个idea.vmoptions文件(这是 Mac OS 系统下的路径设置,基于你的操作系统进行设置)

现在,执行测试用例并比较结果。

结果

Idea启动时间

正如上图所示,启动时间并不依赖于内存设置。Idea 在所有场景下的测试时间都是10秒,无论内存分配有多少。这并不足为奇,因为在此早期阶段,这些设置并不会影响到应用的行为。

加载大项目花费的时间

现在加载 Monolith 项目及其70万行代码。终于,出现了一些的差异。默认设置所花费的时间几乎是其它的3倍。很明显,如此庞大的代码库需要更多的内存。如果我们执行:

jstat -gcutil <IDEA_PID>

会发现,对比其它设置, GC 在默认设置下会变得异常忙碌。

不仅 GC 释放内存的总时间非常高(几乎达到了50倍),而且 Full GC 的平均执行时间也非常非常长。大量的时间都花在了 Full GC 上面,这是 IDE 响应速度低的主要原因。

在IDEA中打开两个微服务

现在加载这两个微服务项目,在 IDEA 中打开并且对比他们所消耗的时间。

在这个测试用例下,差异还是非常明显的,复杂设置表现最佳,而默认设置仍旧输给了其他两种设置。

再次使用jstat –gcutil

加载完两个微服务项目后,来检查一下同时打开3个项目的情况下, GC 的表现情况。经测试发现,3个不同的自定义设置表现几乎差不多,而默认设置简直弱爆了。


最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
8-1714753623477)]

[外链图片转存中…(img-cTCo5xHF-1714753623477)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

### 关于 IntelliJ IDEA 软件黑屏问题的解决方案 IntelliJ IDEA 出现黑屏或住的情况通常由多种因素引起,包括但不限于 IDE 配置文件损坏、插件冲突、硬件驱动不兼容以及操作系统设置不当等问题。以下是针对此现象的具体分析和解决方法: #### 1. **IDE 缓存清理** 如果 IDEA 的缓存出现问题,可能会导致启动时界面加载失败或显示异常。可以尝试通过以下方式清除缓存并重新索引项目: ```bash File -> Invalidate Caches / Restart... ``` 选择 `Invalidate and Restart` 来强制刷新缓存[^1]。 #### 2. **版本兼容性问题** 某些特定版本可能存在已知缺陷,尤其是在新功能引入阶段。例如,在引用中提到的 IDEA 2020.2 版本曾被报告存在类似的性能瓶颈和配置错误问题[^2]。建议升级到最新稳定版或将当前版本回退至更稳定的旧版本(如 IDEA 2020.1),以规避潜在风险。 #### 3. **双显驱动适配** 对于配备 NVIDIA 或 AMD 双显系统的设备来说,开源图形驱动可能导致渲染效率低下甚至崩溃的现象。切换至专有闭源驱动能够显著改善此类状况。具体操作如下: - 使用快捷键组合 `Ctrl + Alt + F3` 进入 TTY 终端环境; - 登录账户后运行命令 `mhwd-tui` 并选取选项编号 “4 Use nonfree graphics”,完安装后再执行重启流程[^3]。 #### 4. **ACPI 参数调整** 部分笔记本型号因电源管理模式设计差异容易触发 ACPI 层面冲突,进而影响 GUI 正常呈现效果。编辑 GRUB 引导菜单中的内核参数可有效缓解这一矛盾: ```bash sudo nano /etc/default/grub ``` 定位至变量定义行 `GRUB_CMDLINE_LINUX_DEFAULT="..."` ,在其原有值基础上追加字符串片段 `"acpi_osi=! acpi_osi='Windows 2009'"` 。保存修改之后记得同步更新引导记录: ```bash sudo update-grub ``` #### 5. **Explorer.exe 异常排查** 当远程连接 Windows Server 类型主机发生蓝屏/黑屏事件时,需重点考虑 explorer.exe 是否意外终止服务。借助其他工具恢复其正常运作即可恢复正常交互体验[^4]: ```powershell tasklist | findstr "explorer" if not defined errorlevel ( start "" "%SystemRoot%\explorer.exe" ) ``` 以上措施综合运用基本能覆盖大部分常见场景下的修复需求。当然实际应用过程中还需结合具体情况灵活应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值