IntelliJ IDEA 2017.1 JDK 8 性能调优

IntelliJ IDEA 问题描述

IntelliJ IDEA 在 多窗口、多项目协作开发时,MacBook Pro的散热风扇凶猛地转动,相关配置如下:

MacBook Pro 配置

MacBook Pro (Retina, 15-inch, Mid 2015)
型号名称:    MacBook Pro
型号标识符:    MacBookPro11,4
处理器名称:    Intel Core i7
处理器速度:    2.2 GHz
处理器数目:    1
核总数:    4
L2 缓存(每个核):    256 KB
L3 缓存:    6 MB
内存:    16 GB
Boot ROM 版本:    MBP114.0172.B16
SMC 版本(系统):    2.29f24

IntelliJ IDEA 版本

IntelliJ IDEA 2017.1.5
Build #IC-171.4694.70, built on July 4, 2017
JRE: 1.8.0_131-b11 x86_64
JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation
Mac OS X 10.12.5

问题原因

默认的IDEA JVM参数配置较低,其中配置存放在 /Applications/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions 文件中,该文件为IDEA 全局配置文件:

-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m

解决方法

修改Info.plist文件

定位Info.plist文件

该文件存放在/Applications/IntelliJ IDEA CE.app/Contents 目录下:

total 32
16 -rw-r--r--    1 Mercy  admin  4210  7 11 18:43 Info.plist
 0 drwxr-xr-x@   3 Mercy  admin   102  7 11 16:21 MacOS
 0 drwxr-xr-x@   7 Mercy  admin   238  7  5 14:06 Resources
 0 drwxr-xr-x@   3 Mercy  admin   102  7  5 14:06 _CodeSignature
 0 drwxr-xr-x@  13 Mercy  admin   442  7 11 18:00 bin
 0 drwxr-xr-x@ 116 Mercy  admin  3944  7  5 14:06 lib
 0 drwxr-xr-x@  34 Mercy  admin  1156  4 25 15:49 license
 0 drwxr-xr-x@  33 Mercy  admin  1122  4 25 15:49 plugins
 0 drwxr-xr-x@   3 Mercy  admin   102  7  5 14:06 redist
修改VMOptions

用 vi 工具打开Info.plist ,其中存在一个 key 元素内容为VMOptions的设置,如下所示:

<key>VMOptions</key>
<string>-Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Xverify:none -XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log -XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof -Xbootclasspath/a:../lib/boot.jar</string>

其中JVM 参数 -XX:+UseConcMarkSweepGC 为 IDEA 默认配置GC 算法,将其移除,修改为:

<key>VMOptions</key>
<string>-Dfile.encoding=UTF-8 -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Xverify:none -XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log -XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof -Xbootclasspath/a:../lib/boot.jar</string>

修改用户idea.vmoptions文件

切换当前用户的IDEA 配置目录

通过命令行,cd到~/Library/Preferences/IntelliJIdeaXX/目录下,如本人的机器路径:

/Users/Mercy/Library/Preferences/IdeaIC2017.1
新建或更新用户idea.vmoptions文件

将新建或者待更新的idea.vmoptions文件,更新以下JVM 配置项

-server
-XX:+UseG1GC
-XX:+UseNUMA
-Xms512m
-Xmn512m
-Xmx8g
-XX:MaxMetaspaceSize=512m
-XX:ReservedCodeCacheSize=240m

调优后观察

风扇旋转情况

启动 IntelliJ IDEA 2017.1 后一小时有余,发现风扇狂转的问题基本上没有发生。

JVM 概要情况

通过工具JConsole 连接 IDEA 进程,观察相关数据。

连接名称: pid: 9743                                        运行时间: 1 小时 39 分钟
虚拟机: Java HotSpot(TM) 64-Bit Server VM版本 25.131-b11   进程 CPU 时间: 6 分钟

JVM 参数情况

VM 参数:-Dfile.encoding=UTF-8 -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true 
-XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Xverify:none 
-XX:ErrorFile=/Users/Mercy/java_error_in_idea_%p.log -XX:HeapDumpPath=/Users/Mercy/java_error_in_idea.hprof -Xbootclasspath/a:../lib/boot.jar 
-server -XX:+UseG1GC -XX:+UseNUMA -Xms512m -Xmx8g -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=240m 
-Djb.vmOptionsFile=/Users/Mercy/Library/Preferences/IdeaIC2017.1/idea.vmoptions -Didea.java.redist=jdk-bundled 
-Didea.home.path=/Applications/IntelliJ IDEA CE.app/Contents -Didea.executable=idea -Didea.platform.prefix=Idea -Didea.paths.selector=IdeaIC2017.1 

其中用户idea.vmoptions文件中的配置信息已经追加到JVM 启动参数中:

-server -XX:+UseG1GC -XX:+UseNUMA -Xms512m -Xmx8g -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=240m

JVM 内存情况

当前堆大小:   376,068 KB
最大堆大小: 8,388,608 KB
提交的内存: 524,288 KB
暂挂最终处理: 0对象
垃圾收集器: 名称 = 'G1 Young Generation', 收集 = 58, 总花费时间 = 1.583 秒
垃圾收集器: 名称 = 'G1 Old Generation', 收集 = 2, 总花费时间 = 1.930 秒

GC 算法已经由CMS切换成了G1算法!

为什么要选择用户idea.vmoptions文件

IDEA 官方的说明

Since version 14.0.0, the file /Applications/IntelliJ Idea XX.app/Contents/bin/idea.vmoptions or /Applications/IntelliJ Idea CE XX.app/Contents/bin/idea.vmoptions should be copied to ~/Library/Preferences/IntelliJIdeaXX/idea.vmoptions or ~/Library/Preferences/IdeaICXX/idea.vmoptions.

避免升级配置覆盖

IntelliJ IDEA 版本升级时,除非用户自行控制,默认情况IDEA会将全局的idea.vmoptions文件覆盖,因此,选择用户的idea.vmoptions文件可避免升级配置覆盖。

使用VisualVM对IDEAJDK1.8 众所周知IDEA的启动是很慢的,最近看了书上对Eclipse启动进行的案例,也想对IDEA整一下,首先贴出来IDEA默认的参数: -Xms128m -Xmx750m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches... 阅读详情

相关推荐

IntelliJ IDEA 2018安装与配置全指南:从环境搭建到性能

集成开发环境(IDE)是软件开发的核心工具,它通过代码补全、试和项目管理等功能提升开发效率。其原理在于将编辑器、编译器和试器等工具集成,提供统一的图形化界面。在Java生态中,IntelliJ IDEA因其智能代码洞察和强大重构能力成为行业标准。对于特定场景,如企业遗留项目或低配环境,安装经典稳定版本成为实际需求。本指南以IDEA 2018为例,深入解析安装配置、插件生态和性能化,涵盖Java开发环境搭建、Maven项目管理和Git版本控制等实践,帮助开发者构建高效可靠的开发工作站。

weixin_42523670的博客 513

JVM异常打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]

JVM异常打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ] 问题现象 最近在排查线上日志的时候发现有个日志捕捉了NullPointerException,但是没有异常堆栈信息 ,只有java.lang.NullPointerException:null这一条信息,无法知道是从哪里抛出来的如图: 经过分析是JIT编译器对异常进行了化,当代码中的某个位置抛出同一个异常很多次后,JIT服务端编译器(C2) 会将其化成抛出一个事先编译好的、类型匹配的异常,异常堆栈

m0_38000428的博客 5455

性能飞跃:深度IntelliJ IDEA的实战指南

通过自定义快捷键,减少鼠标操作,提升工作效率。

2402_85761468的博客 9836

JVM参数OmitStackTraceInFastThrow:打印NullPointerException异常堆栈

查看线上日志,遇到一个诡异的问题,就是系统大量空指针的异常,但是没有打印堆栈,导致方便定位问题。 经过一番代码试,确定并非程序代码问题。没有线索之后,从Google找到了答案:是因为在server模式下运行的时候,有一个默认选项是-XX:+OmitStackTraceInFastThrow,这个玩意的意思就是当大量抛出同样的异常的后,后面的异常输出将打印堆栈,打印堆栈的时候底层会用到Throwable.getOurStackTrace()方法,而这个方法是synchronized的,对性能有比较明显

陈楚东的专栏-学编程切记心浮气躁,贵在坚持 1301

JVM异常打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]

. 背景 生产环境日志突然膨胀到100G+, 为了定位问题,所以截取了部分报错日志, 问题是 堆栈信息呢? 哪里报的NPE在哪??? 信息如下: [ERROR] 2020-12-09 09:41:50.053 - [taskAppId=TASK-1919-33805-97659]:[156] - wait task quit failed, instance id:33805, task id:97659 [ERROR] 2020-12-09 09:41:50.053 - [taskAppId=TAS

张伯毅的专栏 4681

java中的exception stack有时候输出的原因

有时候,我们在看java错误日志时,只看到一个java.lang.NullPointerException,却没有看到错误的栈,原因是启动时候有一项参数可以选择配置:OmitStackTraceInFastThrow JVM 看到某些异常的stacktrace问题在java 1.5的release notes里面可以看到这样一句话: The compiler in the serve...

weixin_30432579的博客 523

idea java opts_IntelliJ IDEA 2017.1 JDK 8 性能

IntelliJ IDEA 问题描述IntelliJ IDEA 在 多窗口、多项目协作开发时,MacBook Pro的散热风扇凶猛地转动,相关配置如下:MacBook Pro 配置MacBook Pro (Retina, 15-inch, Mid 2015)型号名称: MacBook Pro型号标识符: MacBookPro11,4处理器名称: Intel Core i7处理器速...

weixin_33473486的博客 181

IntelliJ IDEA JDK 8 性能全攻略

本文详细介绍了在JDK8环境下IntelliJ IDEA性能的系统方法。首先分析了JDK8特有的性能挑战和IDEA架构特点,然后从基础配置(JVM参数、垃圾回收器选择、IDE设置)到高级(大型项目处理、内存分析、I/O化)进行了全面阐述。文章还提供了插件管理、性能监控、故障排除等实用技巧,并针对微服务、前端等特定场景给出化建议。最后总结了日常维护清单、团队协作规范和长期性能策略,强通过数据驱动的方法持续改进开发体验。尽管JDK8存在限制,但通过系统仍能获得良好性能

油墨香^-^的博客 954

IDEA项目如何切换JDK版本

在我们项目开发的过程中可能会遇到JDK版本过高或者过低导致一些程序无法启动,兼容的问题。所以我们需要切换JDK的版本号,目前JDK8是比较稳定的。接下来分线一下如何在IDEA中切换JDK的版本。......

Wzill 7万+

IntelliJ IDEA 超详细安装与配置指南:从版本选择到性能

集成开发环境(IDE)是程序员进行软件开发的必备工具,它通过整合代码编辑、编译、试等功能,极大提升了开发效率。IntelliJ IDEA 作为一款广受欢迎的 Java IDE,其强大的智能代码辅助和丰富的插件生态,使其在 Java 开发领域占据重要地位。理解其安装与配置原理,仅能确保开发环境稳定运行,更能为后续的高效编码打下坚实基础。本文聚焦于 IntelliJ IDEA 的安装实践,深入解析 Community 与 Ultimate 版本的核心差异,并提供基于 JVM 参数性能化方案,帮助开发

weixin_30906185的博客 532

2024年最新版IntelliJ IDEA下载安装过程(含Java环境搭建)

本文介绍了2024年最新版IntelliJ IDEA的下载和安装过程,包括IntelliJ IDEA介绍、JavaJDK的介绍、如何选择社区版和商业版、Java环境的搭建、讲解了JDK的下载安装及配置。同时,文章还简要概述了Java语言的特点和适用场景,是Java初学者的入门指南。

小相探索IT世界 9万+

IntelliJ IDEA 2022.3 安装与配置全攻略:从环境准备到性能

集成开发环境(IDE)是软件开发的核心工具,它通过集成代码编辑、编译、试等功能,极大提升了开发效率。其工作原理在于为开发者提供了一个统一的、智能化的编码平台。在Java开发领域,一款秀的IDE能显著降低学习曲线,提升代码质量和团队协作效率。IntelliJ IDEA作为业界公认的顶级Java IDE,以其智能代码补全、深度框架集成和强大的重构能力而著称。对于企业级开发,特别是基于Spring Boot和微服务架构的项目,IntelliJ IDEA旗舰版提供了可或缺的工具链支持。本文聚焦于如何为这类开发

weixin_34161032的博客 495

ideajava版本设置_详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)...

详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)有时候需要看Java源码,但是 Java 1.7 和 Java 1.8的差别的关系,有时候你想查看jdk版本的Java源码。或者你的项目需要测试Java jdk 版本的通用与否。那么这个编辑器支持多个版本的jdk同时存在,可以自由的切换具体实现,看下图,一次配置,可以随便使用,省事 安心。这是选择的...

weixin_30209891的博客 2684

IntelliJ IDEA 2023.2配置JDK21全攻略:从安装到实战新特性

本文提供了在IntelliJ IDEA 2023.2中配置JDK21的完整指南,涵盖从环境准备、IDE设置到实战应用。详细讲解了如何解决语言级别兼容等常见问题,并通过虚拟线程、记录模式等JDK21新特性的代码示例,帮助开发者高效升级并利用最新Java功能提升开发效率。

m5n6o7的博客 1181

IntelliJ IDEA JDK 8 性能

点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 精尽 Dubbo 原理与源码 69 篇精尽 Netty 原理与源码 61 篇中文详细注释的开源...

芋道源码 1074

IntelliJ IDEA高效开发环境配置全攻略:从基础设置到性能

集成开发环境(IDE)是程序员的核心生产力工具,其配置化直接影响开发效率与体验。IntelliJ IDEA作为业界主流的Java IDE,通过合理的全局与项目设置,能够实现代码提示、编译构建、版本控制等核心功能的深度定制。理解配置的层次结构(全局、项目、默认值)是有效管理开发环境的基础,正确的JDK、Maven路径与编码设置能从根本上避免环境依赖问题。在工程实践中,针对高频操作自定义快捷键、精选必备插件(如Key Promoter X、String Manipulation),并活用Live Templa

dengjuanshou7445的博客 526

IntelliJ IDEA 高效安装与配置指南:从版本选择到性能

集成开发环境(IDE)是现代软件开发的基石,它通过整合代码编辑、编译、试和项目管理等功能,极大提升了开发效率。其核心原理在于提供智能代码补全、实时错误检测和深度框架集成,将开发者从繁琐的配置和重复劳动中解放出来。在Java及JVM生态中,一款秀的IDE能直接决定项目的开发速度与代码质量。无论是进行企业级应用开发、微服务架构构建,还是学习编程基础,选择合适的IDE并进行正确配置都是首要步骤。本文聚焦于业界广泛使用的IntelliJ IDEA,深入解析其安装过程中的关键决策点,例如Ultimate与Comm

weixin_26804345的博客 255

IntelliJ IDEA 安装后必做配置指南:从性能到效率提升

集成开发环境(IDE)是程序员的核心生产力工具,其性能配置直接影响开发效率。本文从IDE的基础配置原理切入,深入探讨了如何通过整内存参数、化索引机制来提升工具响应速度,并阐述了构建工具集成与版本控制配置的技术价值。这些配置实践能有效解决代码补全延迟、依赖下载缓慢等常见痛点,广泛应用于Java、Spring Boot等项目开发场景。文章重点分享了针对IntelliJ IDEA的全局设置、Maven镜像加速以及Git工作流化等实战技巧,旨在帮助开发者将开发环境从“能用”打磨至“好用”,显著提升日常编码与

weixin_26850069的博客 323
0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值