- 2019年MacBook 16寸,高配1T硬盘,16G内存。
- 外接了一个显示器,Type-C接口的显示器,27寸,支持一线连,一根Type-c既能充电,又能拓展显示接口
- IDEA升级为最新版本,2022.2.2 。 MacOS升级为最新版12.6(我怀疑就是它的坑),没法降级了。
- 因为外接显示器,外接键盘,平时就不太用macbook内置显示器。平时都是合起来放一边的。
- 平时用的无所谓,只要稍微有一点计算量稍高的任务,比如debug,编译,即便是连上真机打包,都会导致笔记本风扇狂转。
- 最近发现(就是升级了MacOS,可能是补丁,不是什么大版本),再出现这种情况时,经常会卡的不行,鼠标都动的很卡顿。
- 任何程序点击一下,反应时间都需要十秒八秒的。小彩球旋转起来就没完,风扇狂转,心在滴血。
- 一遍卡顿,一遍打开“活动监视器”,发现IDEA占据cpu100%左右,这还不可怕,kernel_task占据cpu达到400%,500%,最高到过900%
- 我的天,这个计算也是够可以的。总共CPU也才8核,按说800%就到了极限了吧。实际卡的状况确实是没法用。
- 调查半天,发现说啥的都有。更换type-c接口,外接电源,全都试过了。发现不管用。
- 回家之后也是外接显示器,也是同样插右边,也是typec的接口,只不过是typec转hdmi不带电源。意外发现很少出现这种情况。
- 那么,就是跟数据线以及充电线合二为一的问题了。关键这没有办法改。
- 显示器买了两三年了,之前都没有发现这个问题。就是最近这一两个月。或许更久吧,这一两个月确实经常用到CPU密集型的工作。
- 没有解决方案,那就一点点改善吧。
- 首先,IDEA是罪魁祸首,一切都是它引起的。所以先处理处理它的CPU过高的问题。
- 打开jvm参数设置,调整参数值。最重要一点,加上 -server,这会让java运行时优化内存和堆栈信息,效率比debug高得多。
- 贴上我的参数配置:
注意:
-X 是非标准参数。这些参数不是虚拟机规范规定的。因此,不是所有VM的实现(如:HotSpot,JRockit,J9等)都支持这些配置参数
-XX 是不稳定参数,这类参数的设置会引起JVM运行时性能上的巨大差异,配置好可以提高JVM性能,配置不好会使JVM出现各种问题, 甚至造成JVM崩溃
-server
-Xms1024m
-Xmx2048m
-Xverify:none
-XX:ReservedCodeCacheSize=500m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:-OmitStackTraceInFastThrow
-XX:+HeapDumpOnOutOfMemoryError
#JIT
-XX:CICompilerCount=2
-XX:TieredStopAtLevel=1
-XX:MaxInlineLevel=3
-XX:Tier4MinInvocationThreshold=100000
-XX:Tier4InvocationThreshold=110000
-XX:Tier4CompileThreshold=120000
-Dfile.encoding=UTF-8
-Djanf.debug=1
-Dsun.io.useCanonPrefixCache=false
-XX:+UseCompressedOops
-Dide.no.platform.update=true
-Dtoolbox.notification.token=3Bt-B6ncXlElf7r7_Ku8xgMp68REL_cT6zHjx-0HvLc=
-Dtoolbox.notification.portFile=/Users/qianxuechao/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/222.4167.29/IntelliJ IDEA.app.vmoptions.port
-Didea.plugins.path=/Users/qianxuechao/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/222.4167.29/IntelliJ IDEA.app.plugins
-javaagent:/Users/qianxuechao/Extend/Tools/ja-netfilter/ja-netfilter.jar
--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
- 可以定注意,我的这个参数,不一定适合你的配置。电脑不一样,jdk版本不一样,设置应该也不一样。
- 我这个是一点一点根据网上的材料,一个个挨个试验过来的。首先启动速度都不一样,同样的任务,IDEA就不卡了。
- 这样,极大程度上,排除了一些会导致cpu狂飚的可能性。
- 根据网上一些材料,调整显示器的个性化设置,关闭调度中心里边【显示器具有单独的空间】项目。虽然没有什么大的改观,但是心理作用还是有一些的。
- 搜到的项目,能改的基本都改了。IDEA参数调整之前就改了,没有明显的改观。
- 突然发现一个问题,因为显示器比较大,27寸,又是4K显示器,所以分辨率设置的比较高。这样写代码比较爽。
- 可是他会不会影响cpu消耗呢?gpu消耗也是要发热的呀。
- 所以把显示器的分辨率调低,4k显示器当成2k用,稍微比内置视网膜屏高一点点。居然大有改观,很少再出现卡死的情况了。
- 总结:
- 肯定是操作系统的锅了。因为我显示器用了好几年。分辨率从买来的那一天开始就是设置成4k了。
- 充电也不是一天两天的事儿,接口都没变过。
- 这个kernel_task是内置程序,搜索资料显示是为了降低cpu消耗用的。其实这不是扯淡么,哎。算了。不喷它,以后还得用,等着系统再升级吧,这回可得等着升级程序了,一旦有升级,立即得升。
- 除了cpu的消耗,GPU的性能保护可能也是kernel_task的主要任务,mac上没有什么游戏,要不然跑上一两个巨型游戏,就可以测试出来是不是GPU的锅。
- 纪念一下疑难问题的处理过程。怀念乔布斯。
评论区