• 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的源码也可以定位出阻塞的原因,针对解决。

  • 相关阅读:
    第17篇 2D绘图(七)涂鸦板
    Python 正则表达式
    【JavaWeb】火车票管理系统 (三)用户删除之在jsp页面上显示数据
    log4j2安全漏洞修复
    【学习笔记】拉格朗日插值
    网络精通-VLAN的高级配置之super_VLAN、相同VLAN的端口隔离
    【C++】类和对象的关系,对象的存储方式以及对象内存的计算
    链表OJ练习(2)
    卸载云服务器上的 MySQL 数据库
    Java Pattern.matcher()方法具有什么功能呢?
  • 原文地址:https://blog.csdn.net/fenglllle/article/details/126550996