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.29f24IntelliJ 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的设置,如下所示:
VMOptions -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
其中JVM 参数 -XX:+UseConcMarkSweepGC 为 IDEA 默认配置GC 算法,将其移除,修改为:
修改用户idea.vmoptions文件 切换当前用户的IDEA 配置目录VMOptions -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
通过命令行,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文件可避免升级配置覆盖。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67361.html
摘要:带有一个新的调试器捕获这改变了堆栈跟踪相关各部分用异步代码执行接收器与相应地区的堆栈跟踪捕获的异步代码传递发送方。 反应性编程趋势后,我们的代码越来越异步。 showImg(https://cscdn.maxleap.cn/2.0/download/NTZmMGQ0NzdhNWZmN2YwMDAxZWJlMjg1/zcf-1eb1a6d0-09be-4382-ad89-8c640cc4...
摘要: /Users/zhangwei/Library/apache-tomcat-8.5.13/bin/catalina.sh run [2017-06-29 09:50:05,057] Artifact awbeciweb:war exploded: Server is not connected. Deploy is not available. 29-Jun-2017 21:50:1...
摘要:注释处的方法是程序的入口,使用了符号,这是中单行函数或方法的简写,等价于如下代码方法是框架的入口,如果不返回方法,那么执行的是一个控制台应用。 本文首发于微信公众号「刘望舒」 前言 最近的Google I/O大会上,Flutter1.5 开始支持移动、Web、桌面和嵌入式设备,从不温不火的sky一直进化到如今热门的Flutter,Flutter的发展已经超出很多人的想象。我对跨平台技术一...
摘要:作者简介大家好我是小虚竹。解决方案清除所有断点因为以启动问题启动提示很慢问题分析原因不小心改动到文件解决方案这个文件不是必要的,可以先备份到桌面,然后删除。 ❤...
阅读 3915·2021-11-24 09:38
阅读 3086·2021-11-17 09:33
阅读 3861·2021-11-10 11:48
阅读 1233·2021-10-14 09:48
阅读 3122·2019-08-30 13:14
阅读 2542·2019-08-29 18:37
阅读 3385·2019-08-29 12:38
阅读 1408·2019-08-29 12:30