idea 卡顿
idea 经常出现卡顿,尤其是项目代码量大,使用代码提示时,那卡顿感觉尤其明显。idea 本身就是java 开发工具,出现卡顿也属于正常。对于idea这级别的软件,卡顿的一般原因就是内存太低使用满了,java 频繁进行Full GC 。下面从两个方面进行优化
- jconsole 监控 full gc 频率
- 调整内存设置。
- 关闭代码实时监测。
jconsole 监控 full gc 频率
JConsole 是一个内置 Java 性能分析器,可以从命令行(直接输入jconsole)或在 GUI shell (jdkbin下打开)中运行。
它用于对JVM中内存,线程和类等的监控。可使用JTop插件。它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控几个jvm。
这款工具的好处在于,占用系统资源少,而且结合Jstat,可以有效监控到java内存的变动情况,以及引起变动的原因。在项目追踪内存泄露问题时,很实用。
监控内存进行GC的频率
调整内存设置。
打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置,不过切记最好不要超过内存的1/3:
32 位:idea.exe.vmoptions
64 位:idea64.exe.vmoptions
默认参数:
-Xms128m-Xmx750m-XX:ReservedCodeCacheSize=240m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-ea-XX:CICompilerCount=2-Dsun.io.useCanonPrefixCache=false-Djava.net.preferIPv4Stack=true-Djdk.http.auth.tunneling.disabledSchemes=""-XX:+HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-Djdk.attach.allowAttachSelf=true-Dkotlinx.coroutines.debug=off-Djdk.module.illegalAccess.silent=true
这种方式效果很明显,调整 初始化内存,可以有效的降低Full Gc频率。
设置JVM内存的参数有四个:
-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
用它来设置程序初始化的时候内存栈的大小,增加这个值的话你的程序的启动性能会得到提高。不过同样有前面的限制,以及受到xmx的限制。
-Xmx Java Heap最大值,默认值为物理内存的1/3,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
用来设置你的应用程序能够使用的最大内存。
-Xmn Java Heap Young区大小,不熟悉最好保留默认值;
-Xss 每个线程的Stack大小,不熟悉最好保留默认值;
-XX:PermSize 永久区的大小。
-XX:+UseParNewGC 使用并行收集算法。
关闭掉阿里代码实时监测
建议关闭实时检测,调整为每次提交代码时进行一次扫描。降低工具的内存占比。