IDEA 2024的零卡死配置
用了苹果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的零卡死配置的更多相关文章
- 转载:Centos7 从零编译配置Memcached
序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...
- [原创]Centos7 从零编译配置Memcached
序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...
- SpringBoot零XML配置的Spring Boot Application
Spring Boot 提供了一种统一的方式来管理应用的配置,允许开发人员使用属性properties文件.YAML 文件.环境变量和命令行参数来定义优先级不同的配置值.零XML配置的Spring B ...
- 模拟Springboot一:(零xml配置搭建SSM项目)
在spring官网文档中无论是spring的基础文档,还是spring-mvc文档都推荐我们使用javaconfig的方式来搭建项目 间接说明 (优点:javaconfig配置>xml配置) 其 ...
- 这一次搞懂Spring Web零xml配置原理以及父子容器关系
前言 在使用Spring和SpringMVC的老版本进行开发时,我们需要配置很多的xml文件,非常的繁琐,总是让用户自行选择配置也是非常不好的.基于约定大于配置的规定,Spring提供了很多注解帮助我 ...
- [原创]Centos7 从零编译配置Redis
序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...
- 0.[WP Developer体验Andriod开发]之从零安装配置Android Studio并编写第一个Android App
0. 所需的安装文件 笔者做了几年WP,近来对Android有点兴趣,尝试一下Android开发,废话不多说,直接进入主题,先安装开发环境,笔者的系统环境为windows8.1&x64. 安装 ...
- 0.[Andriod]之从零安装配置Android Studio并编写第一个Android App
0. 所需的安装文件 笔者做了几年WP,近来对Android有点兴趣,尝试一下Android开发,废话不多说,直接进入主题,先安装开发环境,笔者的系统环境为windows8.1&x64. 安装 ...
- 使用JavaConfig和注解方式实现零xml配置的Spring MVC项目
1. 引言 Spring MVC是Spring框架重要组成部分,是一款非常优秀的Web框架.Spring MVC以DispatcherServlet为核心,通过可配置化的方式去处理各种web请求. 在 ...
- [原创]Debian9 从零编译配置Redis4.0
序言 Redis 一.准备工作 1.1 更新系统安装包列表 没啥,就他喵想用个最新的. # apt update 1.2 创建需要使用的目录 创建目录source和web,分别用来放源码和编译后的文件 ...
随机推荐
- Power BI: 设置切片器只能影响到指定的图表
如下所示: 表一和表二的数据都来源于Staff表,切片器也来源于Staff表,但是希望当切片器的值发生变化时,只会影响到表二,表一永远显示所有的数据,不受切片器的影响. 做法如下: 选中切片器,菜单栏 ...
- 01-Ble 协议栈分层
一.协议栈结构 如上图所示,蓝牙协议分为Controller和Host两个部分,Controller为蓝牙底层,为蓝牙物理芯片,Host是真正意义上的蓝牙协议.Profiles(配置文件)总是基于GA ...
- SciTech-EECS-Power-超宽输入电压(AC/DC: 12-270V+)的 隔离型(UC384x) 和 非隔离型 电源电路设计( 降压电源芯片: 以XD308H为例
SciTech-EECS-Power-超宽输入电压范围非隔离型DC-DC降压芯片: 以XD308H为例 隔离型 超宽输入电压范围 以下的原理 也可以运用到 UC384* 及其他的 电源变换电路上. L ...
- [转载]量子力学的Copenhagen学派Copenhagen Interpretation of Quantum Mechanics
Origin: https://plato.stanford.edu/entries/qm-copenhagen/ Copenhagen Interpretation of Quantum Mecha ...
- 变量间关系•R.A.(Regression Analysis)·Linear+Logistic•LSE:最小二乘估计
R.A.定义: R.A.(回归分析)是一种统计学方法: 用于研究变量间的关系,特别是确定一个或多个自变量与一个因变量之间的定量关系. R.A. 不仅揭示变量间的关系,还能进行预测和假设检验. 类型Li ...
- CVE-2020-17526 Apache Airflow 身份验证绕过漏洞 (复现)
开启容器前执行docker compose run airflow-init初始化Apache Airflow 数据库 再执行docker compose up -d开启容器 访问ip:8080端口登 ...
- CVE-2014-6271 Bash破壳漏洞Shellshock (复现)
服务启动后,通过浏览器或命令行访问以下两个页面,确认服务已正常运行: 存在漏洞的页面(基于 bash4.3):http://your-ip:8080/victim.cgi 修复后的页面(基于最新版 b ...
- 【转】-Java并发之CyclicBarrier
Java并发之CyclicBarrier 该博客转载自巴蜀码哥 ** 的Java并发之CyclicBarrier** barrier(屏障)与互斥量.读写锁.自旋锁不同,它不是用来保护临界区 ...
- Centos setfacl和getfacl核心命令
在CentOS系统中,setfacl和getfacl是管理文件系统访问控制列表(ACL)的核心命令,提供比传统权限模型(用户/组/其他)更精细的权限控制.以下是详细解析及操作指南: ⚙️ 一.AC ...
- AmazeUI Sublime
http://amazeui.shopxo.net/getting-started/ 打开sublime text 并选择Preferences -->Browse Packages打开 选择下 ...