admin管理员组文章数量:1656734
前言
不知道从什么时候开始intellij idea的run和debug Springboot项目时非常卡,经常要卡顿很久才能启动,笔者只以为是idea的优化不太好,但是通过搜索,发现很多提问卡顿的,有说退回2018版本就不卡了。也有说配置jvm的堆大小的,但是笔者配置堆大小没用。
优化
优化就是修改jvm的堆大小,分配更大的内存,毕竟idea是Java开发的,在idea打开很多项目时,这个方法可以避免OOM。
在help下打开VM选项
设置堆最大值,跟普通项目设置jvm一样,其他参数也可以设置,看需求,在有同时打开很多项目时很有用。
设置hostname
实际上,笔者设置了JVM参数,并不能解决run或者debug时,经常卡顿10多秒才运行的问题,直到一天查资料,发现了根本原因,需要hosts文件设置hostname,特么奇怪的需求。
Intellij freezes when running debug on Mac : IDEA-157303 (jetbrains)
问题来源于上面的官方issue。实际上卡顿时可以通过jstack看main线程的栈信息来看为什么run或者debug的时候卡顿
通过jstack,发现main线程在读取hostAddr,错怪idea了,根源居然在Springboot,😅,没想到吧,锅是Springboot的,错怪idea了,哈哈,笔者这里是取IPV6的host
class Inet6AddressImpl implements InetAddressImpl {
public native String getLocalHostName() throws UnknownHostException;
public native InetAddress[] lookupAllHostAddr(String hostname)
throws UnknownHostException;
class Inet4AddressImpl implements InetAddressImpl {
public native String getLocalHostName() throws UnknownHostException;
public native InetAddress[]
lookupAllHostAddr(String hostname) throws UnknownHostException;
都是native方法,底层是JNI调用,这步消耗了很长时间,通过配置hostname即可消除
sudo vim /etc/hosts
hostname即可看hostname
配置好hosts
source /etc/hosts
生效 ,从此Springboot启动就不卡了,很流畅。
总结
很多时候出现问题,需要分析,比如idea的优化,实际上是不够用了才优化,如果默认情况下流程,其实不用管,比如这个Springboot应用启动卡顿的问题,通过jstack可以发现阻塞10多秒是获取hostname的过程,通过main方法的栈信息可以看到代码执行,对比openjdk的源码也可以定位出阻塞的原因,针对解决。
本文标签: 解决方法IDEAIntelliJ下卡顿macOS
版权声明:本文标题:intellij idea在macOS下卡顿的问题解决方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729749587a1212008.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论