• intellij idea在macOS下卡顿的问题解决方法


    前言

    不知道从什么时候开始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.com)

    问题来源于上面的官方issue。实际上卡顿时可以通过jstack看main线程的栈信息来看为什么run或者debug的时候卡顿

     通过jstack,发现main线程在读取hostAddr,错怪idea了,根源居然在Springboot,😅,没想到吧,锅是Springboot的,错怪idea了,哈哈,笔者这里是取IPV6的host

    1. class Inet6AddressImpl implements InetAddressImpl {
    2. public native String getLocalHostName() throws UnknownHostException;
    3. public native InetAddress[] lookupAllHostAddr(String hostname)
    4. throws UnknownHostException;
    5. class Inet4AddressImpl implements InetAddressImpl {
    6. public native String getLocalHostName() throws UnknownHostException;
    7. public native InetAddress[]
    8. 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的源码也可以定位出阻塞的原因,针对解决。

  • 相关阅读:
    c语言练习77:公因⼦的数⽬
    Python处理复杂的CSV文件
    城市内涝积水监测,万宾科技内涝预警监测系统
    Dive into TensorFlow系列(2)- 解析TF核心抽象op算子
    C语言函数针对训练--递归篇(动画讲解,由易到难递归例题)
    Go 并发模型—Goroutines
    redis实现分布式锁(包含代码以及分析利弊)
    Redis 分片集群
    做个清醒的程序员之打造核心竞争力
    MySQL备份与恢复
  • 原文地址:https://blog.csdn.net/fenglllle/article/details/126550996