用了苹果container跑Linux之后,IDEA 2024 用着用着就卡死,这是苹果 Silicon M1 Max专属JDK 8 的零卡死配置。

JDK版本配置

IDEA 2024在默认情况下 Project 的 Language level 会从JDK22开始的,这样,我们一般打开project的时候需要将JDK版本设置为8。通过 File → Project Structure → Project 把JDK的相关配置设为JDK8版本即可。

maven配置

IDEA 2024在默认情况下 maven使用的是3.9版本,可能需要通过Settings → Build, Execution, Deployment → Build Tools → Maven设置为我们当前所用的maven版本。

同时也建议去掉Work offline这个选项,关闭离线模式:

侧边栏跟随打开选中的文件

IDEA2024点击Tab栏上的文件,左侧的侧边栏不会跟随打开选中的,我们可以通过侧边栏的behavior设置勾选下列3个选项:

文件搜索

IDEA2024是双击Shift键快捷搜索文件的。如下图所示,输入关键字,对于all是可以看到所有的选项,然后点击preview会展开搜索项的预览情况:

如果只想要搜索类文件,则可以通过filter进行筛选。

还可以通过点击tab进行个性化筛选。比如,查询All Places(项目中的类)或者是Project adn Libraries(项目和类库中的),如下图所示:

函数的快速定位

IDEA 2024对于函数比如FutureTask的源码阅读,可以看到如下所示,无论怎样滚动代码,这个方法以及类的定义始终浮于上方。

也就是说,如果这个函数体很长,IDEA2024对此进行了优化的。

查看变量调用

IDEA 2024中,可以通过Command + B快捷键查看变量的调用。如果在项目中没有用到这个变量,那么可以用Command + Option + F7快捷键来设置检索范围:

想要查看方法或者是变量调用详情,可以先把光标停在方法或者变量上,然后通过Option + F7快捷键来查看调用详情。

以FutureTask的run方法为例,可以看到对其调用的检索,通过左边就可以定位到调用,右边就是调用的详情。

查看TODO项

要进行代码的todo项的检索,可以通过view→Tool Windows→TODO来查看:

然后在 todo 栏能看到在项目中所有的 todo 注释:

源码调试

IDEA 2024可以快速跳到下一个断点,也就是说,如果在这有几个函数,先跳过,直接到最后一行输出。只需要点击这个Run to cursor,最终就会定位到我们想要的位置上。

idea.vmoptions 配置调整

JVM配置是针对10核CPU (8性能核 + 2效率核) + 32GB统一内存的:

# 内存配置 - M1 Max统一内存架构优化
-Xms5120m
-Xmx5120m # 元空间配置
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=1024m # 代码缓存 - M1 Max可以用更大的缓存
-XX:ReservedCodeCacheSize=1024m # GC策略 - M1 Max下ParallelGC表现最佳
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=10
-XX:ConcGCThreads=3 # 编译器优化 - 充分利用10核处理器
-XX:CICompilerCount=8
-XX:+TieredCompilation
-XX:TieredStopAtLevel=4 # M1 Max特殊优化
-XX:+AggressiveOpts
-XX:+UseFastAccessorMethods
-XX:+UseCompressedOops
-XX:+UseCompressedClassPointers # 性能调优
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:+UseStringDeduplication
-XX:NewRatio=2 # Apple Silicon专属参数
-Dfile.encoding=UTF-8
-Djava.net.preferIPv4Stack=true
-Dcom.apple.macos.useScreenMenuBar=true # 调试和监控
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:+IgnoreUnrecognizedVMOptions
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps # JetBrains IDE专属优化
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=~/Desktop/ # UI渲染优化 (Retina显示器)
-Dawt.useSystemAAFontSettings=lcd
-Dswing.aatext=true
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine

上面的配置中:

  • 堆内存:5GB,我用Stats.app监控着RAM(内存)的占用率为83%左右,比调整配置前多了10%,除了idea本身进程的5GB,还是2个各用了至少1GB的java进程。

  • 编译线程:8个。

  • GC线程:10个,充分利用M1核心。

  • 稳定性:由G1GC调整为ParallerGC,稳定大幅提升。

小结

原先的配置导致卡死的原因主要是:

  • JDK 8配置成G1GC在M1 Max上不够稳定。

  • 编译线程数严重不足,浪费M1性能。

现在这配置是零卡死风险了。

IDEA 2024的零卡死配置的更多相关文章

  1. 转载:Centos7 从零编译配置Memcached

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

  2. [原创]Centos7 从零编译配置Memcached

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

  3. SpringBoot零XML配置的Spring Boot Application

    Spring Boot 提供了一种统一的方式来管理应用的配置,允许开发人员使用属性properties文件.YAML 文件.环境变量和命令行参数来定义优先级不同的配置值.零XML配置的Spring B ...

  4. 模拟Springboot一:(零xml配置搭建SSM项目)

    在spring官网文档中无论是spring的基础文档,还是spring-mvc文档都推荐我们使用javaconfig的方式来搭建项目 间接说明 (优点:javaconfig配置>xml配置) 其 ...

  5. 这一次搞懂Spring Web零xml配置原理以及父子容器关系

    前言 在使用Spring和SpringMVC的老版本进行开发时,我们需要配置很多的xml文件,非常的繁琐,总是让用户自行选择配置也是非常不好的.基于约定大于配置的规定,Spring提供了很多注解帮助我 ...

  6. [原创]Centos7 从零编译配置Redis

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

  7. 0.[WP Developer体验Andriod开发]之从零安装配置Android Studio并编写第一个Android App

    0. 所需的安装文件 笔者做了几年WP,近来对Android有点兴趣,尝试一下Android开发,废话不多说,直接进入主题,先安装开发环境,笔者的系统环境为windows8.1&x64. 安装 ...

  8. 0.[Andriod]之从零安装配置Android Studio并编写第一个Android App

    0. 所需的安装文件 笔者做了几年WP,近来对Android有点兴趣,尝试一下Android开发,废话不多说,直接进入主题,先安装开发环境,笔者的系统环境为windows8.1&x64. 安装 ...

  9. 使用JavaConfig和注解方式实现零xml配置的Spring MVC项目

    1. 引言 Spring MVC是Spring框架重要组成部分,是一款非常优秀的Web框架.Spring MVC以DispatcherServlet为核心,通过可配置化的方式去处理各种web请求. 在 ...

  10. [原创]Debian9 从零编译配置Redis4.0

    序言 Redis 一.准备工作 1.1 更新系统安装包列表 没啥,就他喵想用个最新的. # apt update 1.2 创建需要使用的目录 创建目录source和web,分别用来放源码和编译后的文件 ...

随机推荐

  1. jenkins部署后端SpringBoot

    安装和配置java 安装java就不介绍了,因为到这一步,java环境肯定是已经安装完了. 这里多介绍给jekins配置java环境,方便编译后端项目. 全局工具配置>JDK>新增 安装和 ...

  2. @Data 注解

    简介 对于 Data 注解基本理解而言就是生成 getter & setter 函数 但是经过探究 不单单有getter & setter 还有 toString方法 hashCode ...

  3. Day13 备战CCF-CSP练习

    Day 13 题目描述 题目分析 大模拟,用栈储存每一个多项式,最后根据导数的加法原则依次求导相加,注意取模. C++代码 #pragma GCC optimize(3, "Ofast&qu ...

  4. Rust:axum学习笔记(6) SSE(Server Send Event)服务端推送

    接上一篇继续,SSE也就是服务端推送技术,自html5推出以来基本上各大浏览器都已支持,axum自然也支持,参考下面的代码: async fn sse_handler( TypedHeader(use ...

  5. 使用python画3D立体爱心

    原理 1.使用python中的matplotlib库. 2.立体爱心面公式 \[(x^2+\frac{9}{4}y^2+z^2-1)^3-\frac{9}{80}y^2*z^3-x^2*z^3=0 \ ...

  6. python私有变量的操作函数生成

    python私有变量的操作函数生成 作者:咕魂 时间:2022年1月30日 当使用python来写私有变量的模型类的时候,一个个写一个个改好累,然后我就稍微写了个小工具,可能有其他好用的IDE或者插件 ...

  7. 06Java基础之方法

    什么是方法 Java方法是语句的集合,他们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或者对象中 方法在程序中被创建,在其他地方被吸引 设计方法的原则:方法的本意是功能块,就 ...

  8. BAT批处理运行项目

    BAT批处理运行项目 1. 批处理简介 顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令. 2. 编写启动zookeeper ...

  9. 常见排序整合(python版)

    1.冒泡排序 #bubble sort #时间复杂度为o(n^2) #升序和降序只需要改动其中的一个箭头方向即可 def bubble_sort(li): count=1 for i in range ...

  10. PPT(一)-默认设置

    一.暗夜模式 二.无限撤回 三.自动保存 四.图片压缩 五.字体嵌入 防止不同电脑打开字体不一样 六.多格式导出 实际上是可以将ppt文件导出成pdf.视频.图片形式的ppt的. ppt的每页导出成图 ...