码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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的源码也可以定位出阻塞的原因,针对解决。

  • 相关阅读:
    JavaSE学习--数据类型和运算符
    【GD32F427开发板试用】+demo的正确打开方式(一)
    关于渗透实战中分析微信小程序前端代码的诸多问题
    Spring Boot Security 角色授权示例
    Springboot毕设项目共享单车管理系统93je9(java+VUE+Mybatis+Maven+Mysql)
    ssm框架的网上招聘系统的设计与实现,ssm框架,java编程,mysql数据库 myeclipse开发平台
    文件操作【c语言】
    JSP第三篇 -----JSP浅聊JSTL标签库
    2、排序算法概述
    SQL中使用ROLLUP和CUBE函数轻松生成汇总行
  • 原文地址:https://blog.csdn.net/fenglllle/article/details/126550996
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号