IDEA修改idea64.exe.vmoptions文件以及解决coding卡顿问题
作者:Andya_net
IDEA修改idea64.exe.vmoptions文件及解决coding卡顿
用idea软件同时打开多个项目时,过个几天不关闭,就慢慢陷入卡顿的漩涡。
于是网上各种搜索解决方案,目前亲测有效的一个方案就是修改idea64.exe.vmoptions
文件中的配置值。
介绍
idea64.exe.vmoptions
是IntelljJ IDEA的可执行文件的VM(虚拟机)配置文件,我们可以理解为应用程序的虚拟机配置参数。
还有一个idea.exe.vmoptions
是针对32位IDEA使用的。一般存放在JetBrains\IntelliJ IDEA 2018.1.2\bin
路径中。
该文件有别于我们开发的Java项目的VM参数,Java项目一般是配置在启动脚本或者直接指定JVM运行参数,该文件对于使用IDEA开发的Java项目是无效的,只能对于IDEA本身有效哦。
配置详解
-Xms128m -Xmx750m -XX:ReservedCodeCacheSize=512m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow
参数 | 说明 |
---|---|
-Xms128m | 指定虚拟机堆内存初始值大小,最小Java Heap值,默认物理内存的1/64,一般设置为相同值较好,避免频繁对堆内存进行扩容和GC带来的系统开销 |
-Xmx750m | 指定虚拟机堆内存最大值大小,最大Java Heap值,默认物理内存的1/4 |
-XX:ReservedCodeCacheSize=512m | 预留保存代码缓存的内存空间大小 |
-XX:+UseConcMarkSweepGC | 老年代使用CMS垃圾回收策略,并发、标记、清理重置 |
-XX:SoftRefLRUPolicyMSPerMB=50 | 每兆堆空间中最近最少使用的软引用存活时间为50秒,LRU(Least Recently Used)最近最少使用 |
-ea | eq开启断言,-da表示禁止断言 |
-Dsun.io.useCanonCaches=false | 使用标准缓存 |
-Djava.net.preferIPv4Stack=true | 使用IPV4协议 |
-XX:+HeapDumpOnOutOfMemoryError | 当堆内存溢出时,启用堆Dump快照 |
-XX:-OmitStackTraceInFastThrow | 忽略异常栈信息,迅速抛出 |
关于IDEA的idea64.exe.vmoptions文件使用的误区
我电脑中安装的是IDEA 2017.2.5 64位版本的,在IDEA安装目录下的bin目录下有一个idea64.exe.vmoptions文件。
如下图:
该文件的内容如下:
我以为修改该文件中的-Xms和-Xmx参数可以改变程序运行时的堆内存大小。但是无论怎么修改都生效不了。
做过如下尝试
点击功能栏中Help->Edit Custom VM Options,是的在用户目录中产生一份idea64.exe.vmoptions,修改该文件的内容——失败。
在运行配置中新增环境变量:IDEA64_VM_OPTIONS=C:\Users\Administrator.IntelliJIdea2017.2\config\idea64.exe.vmoptions(如下图),指定idea64.exe.vmoptions文件的位置——失败
新增系统变量:IDEA64_VM_OPTIONS=C:\Users\Administrator.IntelliJIdea2017.2\config\idea64.exe.vmoptions(如下图),指定idea64.exe.vmoptions文件的位置——失败
通过以上三种方式都无济于事,查看程序运行时堆内存情况并没有改变
查阅相关资料才知道,idea64.exe.vmoptions针对的是idea环境,对通过Idea运行的java项目不起作用。
idea本身就是一个 Java 应用,所以也必须运行于 JVM 之上。
此处的 idea64.exe.vmoptions 文件就是用来配置64位的 idea 所使用的 JVM 参数。
是idea运行时用的配置,并不是项目运行的配置。
可以通过下面方式验证:
默认-Xmx750m
修改为-Xmx950m
idea64.exe.vmoptions确实生效了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。