青年时代的锻炼比黄金还贵——佚名 今天idea很卡,经常卡死动不了崩溃,明明内存分配了很高,使用率也很低,但还是卡死 最后把所有插件禁用掉,发现不卡了,于是一个插件一个插件启用,直到又出现崩溃
在我们日常使用IDEA进行开发时,可能会遇到许多卡顿的瞬间,明明我们的机器配置也不低啊?为什么就会一直卡顿呢? 原来这是因为IDEA软件在我们安装的时候就设置了默认的内存使用上限(通常很小),这就是造成我们使用IDEA时卡顿的根本原因。 比如我这台电脑,明明是16GB的运行内存,但是IDEA默认给我分配的使用上限是1GB,当我运行大量代码时自然而然的就会产生卡顿。 我们可以通过显示内存使用情况来查看当前项目占用的内存大小。 好了,最后我们来看一下重启之后的IDEA效果~没错,很流畅 另外说一句,JetBrains系列的产品都可以通过这种设置来解决卡顿的问题。 Xss:每个线程的Stack大小 -verbose:gc 现实垃圾收集信息 -Xloggc:gc.log 指定垃圾收集日志文件 -Xmn:young generation的heap大小,一般设置为Xmx的3、
IDEA卡顿 最近一段时间经常会在开发的时候感觉到 IDEA 很卡,在一个类里上下滚动或者切换类文件时都能够明显的感觉到,我以为是我项目打开的太多了,毕竟内存优化已经做过了,但是今天实在是被这玩意儿卡的有点烦了 最终被逼的去检查了一下 IDEA 的启动配置文件,看到的内容的时候我石化了,配置文件就是默认的,没改动过。还真是活该就这么卡,只给分配了几百兆的最大内存,可不是卡成这逼样吗? 这个问题其实和 MyEclipse 以及 Eclipse 卡顿一样,首先是内存设置的不够大,其次是软件上安装了一些可有可无的插件或者开启了一些代码检查之类的实时监测,一般都是通过修改这三个设置来使得卡顿问题消失 修改 vmoptions 文件 Windows 环境 首先是找到 IDEA 的安装目录,之后到安装目录的 bin 目录下,找到如下两个文件: idea.exe.vmoptions idea64.exe.vmoptions 然后打开这个文件进行编辑(我用的是 sumbline2 编辑器),把内存调一下就可以了,不过 Mac 系统下的 IDEA 平时确实不怎么卡,改不改感觉差别不大。 ?
IntelliJ IDEA 无疑拥有着强大和广泛的功能,但这也会使其在某种程度上占用资源--打开IntelliJ IDEA,再看看你的CPU占用就知道啦! IntelliJ IDEA 2024让编码更快 IntelliJ IDEA 打开项目时,需要等待一会儿已经时很常见的事情了! IntelliJ IDEA打开项目为什么慢 如果大家查看 2023.2 之前的 IntelliJ IDEA 版本,就会发现:IDE 必须等待项目的 Maven 或 Gradle 项目模型完全同步,然后才能开始索引 项目打开慢,小二哥的建议是“上固态可能来得快些~~”) 官方的改进 官方 在 IntelliJ IDEA 中改进启动和项目打开的问题上,做了长期的努力和沉淀,比如通过调整 IntelliJ IDEA 通俗点说:我可以忍受IDEA慢慢加载完成整个项目,但IDEA不能让我一直干瞪眼等着。于是,IDEA就分阶段加载,一个阶段好了,就给大家先用着些功能,然后IDEA在继续默默的加载剩下的部分...
ARTHook实战 小结 项目GitHub 背景介绍 前面提到过两种自动化自动化检测方案: AndroidPerformanceMonitor和ANR-WatchDog; 需要本方案的原因:自动化卡顿检测方案无法满足所有场景 ; 如,有很多Message要执行, 但是所有Message的时间, 都没有达到自动化卡顿检测方案所配置的卡顿的判定阈值, 那这种情况,自动化卡顿检测方案对这些“较小型”的卡顿问题便无能为力了; 可是这些没有达到卡顿的判定阈值的“较小型”的卡顿问题, 却会一直影响用户体验,这显然是不行的!! 需要建立体系化的卡顿解决方案, 便要尽早地尽可能多地暴露问题,补充已有方案的不足; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 需要关注的单点问题 View绘制等; 下面以主线程IPC为例, 因为IPC其实是一个很耗时的操作, 但实际开发时很多时候都没有得到足够的重视, 偶尔还会在主线程进行IPC操作,以及频繁的调用, 而这种耗时其实很少达到卡顿的阈值
AndroidPerformanceMonitor implementation 'com.github.markzhai:blockcanary-android:1.5.0' AndroidPerformanceMonitor 是一个检测卡顿的开源库 而其使用与LeakCanary也比较相似,可以自主设置卡顿检测时间,检测到的卡顿同样是以Notification展示,在使用体验上也相当类似,与LeakCanary可以说是孪生兄弟。 提示框(Room表现不一,有些手机厂商会把提示框给去掉) ANR 解决方式 adb pull data/anr/traces.txt存储路径,然后分析CPU、IO及锁 ANR 测试 //给主线程造成卡顿 检测组件 https://github.com/SalomonBrys/ANR-WatchDog 使用:new ANRWatchDog().start(); 原理 ANR-WatchDog同样是一个检测卡顿的检测库 AndroidPerformanceMonitor与 ANR-WatchDog 区别 AndroidPerformanceMonitor:监控Msg ANR-WatchDog:看最终结果 前者适合监控卡顿
+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD IDEA运行卡顿,该怎么配置才能更流畅? 电脑明明配置不错,可运行 IDEA 的时候,就是卡顿、就是慢。 相信很多读者都遇到过这个问题,本篇推文就大家如何配置 IDEA,让你的 IDEA 无比流畅。 打开IDEA配置文件.png 2、IDEA参数配置 如果你是第一次打开, IDEA 会询问是否创建该文件,直接确认就好了。 这时候我们已经打开了 IDEA 的配置文件 idea.vmoptions,以下是我的 IDEA 的配置信息。 IDEA配置.png 我的笔记本内存是 16G,大家根据自己电脑的内存大小设置值就好了。 ## IDEA 的启动内存,越大越好。 -Xms128m ## IDEA 的最大运行内存,也是越大越好。
从网上下载的资源用PS打开有时候会很卡顿以下几个方法可以让PS很丝滑 删除冗余的元数据,如何查看元数据菜单(文件)--文件简介(alt+ctrl+shift+i)--原始数据 有时候会显示meta数据过大无法显示
这就是界面卡顿的原因。 所以,卡顿造成的原因分为CPU卡顿和GPU卡顿,CPU卡顿可以用CADisplayLink来检测,UI更新卡顿可以用Runloop的mode来检测 监测卡顿:开一个子线程,利用displaylink或者 Runloop来监测卡顿; 收集堆栈:将卡顿时的堆栈收集起来; 上传记录:将卡顿上传到后台或自定义; 这里我引用一张微信开发团队的监测流程图: 二、Runloop检测卡顿 首先我们来看一个 所以通过比较dispalylink的更新时间就可以知道是否存在卡顿 - (void)updateTime{ if (! 2、上传位置,一种是自己建立后台来统计这些卡顿,嫌麻烦的话是利用第三方平台、如友盟(统计崩溃比较多)、听云、OneApm、博睿,都大同小异。
一、卡顿原因 屏幕1秒60帧,平均每帧16.6毫秒,如果代码实现不佳,或者过于复杂,导致一帧绘制时间大于16.6毫秒,则无法完成绘制,造成丢帧,连续出现掉帧,在现象上表现为卡顿。 默认情况下,性能分析器只会将卡顿帧显示为有待调查的候选对象。在每个卡顿帧中,红色部分突出显示了相应帧超出其渲染截止时间的时长。 image.png 发现卡顿帧后,点击该帧;可根据需要按 M 键调整缩放程度以聚焦到所选帧。 image.png 3、在Android 10及更低版本上检测卡顿情况 对于搭载 Android 10(API 级别 29)及更低版本的设备,相关的操作系统图形管道信息会显示在 CPU 性能分析器系统轨迹中的单个部分 这些线程与界面呈现有关,可能是导致卡顿的原因。 如需在 Android 10 或更低版本上检测卡顿情况,请执行以下操作: 查看 Display 中的 Frames 轨迹。
按照60FPS的帧率,每隔16ms就会有一次VSync信号,1秒是1000ms,1000/60 = 16 卡顿的原因: iOS默认刷新频率是60HZ,所以GPU渲染只要达到60fps就不会产生卡顿。 RunLoop监听 原理:卡顿是在主线程进行了耗时的操作,可以添加Observer到主线程的Runloop中,通过Runloop状态切换的耗时,达到监控卡顿的目的。 卡顿监控起一个子线程定时检查主线程的状态,当主线程的状态运行超过一定的阈值,则认为主线程卡顿,从而标记为一个卡顿。 分析实现: 使用Runloop进行卡顿监控,定义一个阈值判断卡顿的出现,记录下来上报到服务器。 子线程Ping 根据卡顿发生时,主线程无响应的原理,创建子线程去循环ping主线程,ping之前先设置卡顿标志为True,再派发到主线程执行后设置标志为false,子线程在设置阈值时间内休眠结束后,根据标志判断主线程有无响应
3. 还原网络 如果尝试了以上两种方法后信号还是一般的话,可以通过还原网络设置来解决。 操作指南:【设置】-【通用】-【还原网络设置】 3.jpg 另外两种比较常见的方法为重启手机或者开启再关闭飞行模式。
:45,194 [ 331404] WARN - s.ui.configuration.SdkDetector - No version is returned for detected SDK IDEA 默认给程序使用的内存是700m左右,内存不足也可能导致idea 出现上面情况。 于是将idea的运行内存调整为2G,配置文件为idea安装目录/bin/idea64.vmoptions,配置内容如下(只修改了-Xms 和-Xmx的大小):-Xms512m-Xmx2048m-XX:ReservedCodeCacheSize 经过上面三个步骤之后,idea卡顿的现象就不是那么明显了(肉眼不可见)。 其他原因经过我自己使用过程中发现,Linux版的搜狗输入法可能会导致整个Linux操作系统都比较卡顿,idea里面使用搜狗输入法更卡,建议大家不要在Linux下面使用搜狗输入法。
,无法覆盖大量的可疑场景,测试重现耗时耗人力; 3、无法衡量静态页面的卡顿情况; 4、出现卡顿的时候app无法及时获取运行状态和信息,开发定位困难。 ,去重后找出最高重复次数的堆栈,发现堆栈C出现了3次,这次卡顿很有可能就是卡在堆栈3反映的函数调用上。 卡顿监控系统的处理流程 用户上报 目前我们的策略是: 1、通过后台配置下发,灰度0.2%的用户量进行卡顿监控和上报; 2、如果用户反馈有卡顿问题,也可实时捞取卡顿日志来分析; 3、每天灰度的用户一个机器上报一次 ,按照卡顿上报重复的次数降序列出; 2、归类后展示每个卡顿的关键耗时代码,也可查看全部堆栈内容; 3、支持操作卡顿记录,如搜索卡顿,提tapd单,标注已解决等; 4、展示每个版本的卡顿问题修复数据情况, 这里要注意几点: 1、采样堆栈信息的频率和卡顿耗时的阈值均可在SDK中设置; 2、SDK默认判断一个卡顿是否发生的耗时阈值是80ms(5*16.6ms) 3、采样堆栈的频率是52ms(约3帧+,尽量错开系统帧率的节奏
btnStartRead.Enabled = true; UiRefresh(null); } 正常运行时: 点击停止读: 正常读,拔掉通讯线,界面不卡:
前言 在日常业务测试中经常会发现页面跳转卡顿、滑动卡顿等等卡顿问题,但是往往发生了卡顿问题也没有什么具体信息提供给开发同学排查问题,所以也就不了了之了。 Blockcanary介绍 介绍 Blockcanary是@markzhai开发的检测app主线程卡顿工具,不需要在代码中插桩和debug代码就能检测出卡顿。 log日志 根据上面的配置代码并打包app,进行手工测试如果主线程卡顿超过1000ms,会在手机sdcard/BlockTest目录下生成卡顿日志。 卡顿文件包含几点: 发生时间 版本 imei cpu型号 内存 卡顿堆栈 上报log日志 之前方式的卡顿日志需要连接该设备把log手动导出来分析,或者在卡顿弹框中展示,这样并不能做到日志持久化和做后期的数据分析 项目 我们模拟一个Demo项目来模卡顿,点击block按钮后sleep2秒来模拟卡顿。 卡顿日志:
多配置中心,解决无法同步更新(nacos/consul) 问题背景 tomcat部署于linux centos 7.x 安装了jdk1.8和tomat8 发现,每次在启动tomcat的时候都会出现卡顿好久才会完成部署
丢帧给用户的感觉就是卡顿,而且如果运算过于复杂,丢帧会更多,导致界面常常处于停滞状态。 卡顿原因 过于复杂的布局 界面性能取决于 UI 的渲染性能,UI 渲染的整个过程由 CPU 和 GPU 两个部分协同完成。 如果 UI 布局层次太深,或是自定义控件的 onDraw 中有复杂运算,CPU 的相关运算就可能大于 16ms,导致卡顿。 过度绘制 UI 线程的复杂运算 UI 线程的复杂运算会造成 UI 无响应,导致 ANR,但更多的是造成 UI 响应停滞卡顿,ANR 是卡顿的极致。
drawvisual wpf的控件frameworkelement、继承自visual,wpf的gui节点分为 visualtree,可见的ui树 logictree,xaml中的节点树 drawvisual卡顿 drawvisual数量增加后,有时出现卡顿现象,比对分析发现卡顿时的资源情况 drawvisual绘制完成后正确释放,否则大量的资源集中起来会造成绘制卡顿,如下图gc占了很多时间 io写入数据明显增加
什么是卡顿 什么是卡顿,很多人能马上联系到的是帧率 FPS (每秒显示帧数)。那么多低的 FPS 才是卡顿呢?又或者低 FPS 真的就是卡顿吗? 一个稳定在 30FPS 的动画,我们不会认为是卡顿的,但一旦 FPS 很不稳定,人眼往往容易感知到。 FPS 低并不意味着卡顿发生,而卡顿发生 FPS 一定不高。 所以界面的掉帧程度,往往可以更直观的反映出卡顿。 怎么衡量流程性 我们将掉帧数划分出几个区间进行定级,掉帧数小于 3 帧的情况属于最佳,依次类推,见下表: ? 一般也是从用户反馈中得到,通常表述为“新版本变卡了”,“朋友圈很卡”,“聊天经常无响应”,我们很难在这种描述中,直接洞察到卡顿的根源,甚至有些连卡顿的场景都不知道,很难准确重现,所以这种卡顿容易让人摸不着头脑 3、针对界面启动耗时,因为要统计从 Activity#onCreate 到 Activity#onWindowFocusChange 间的耗时,所以在插桩过程中需要收集应用内所有 Activity 的实现类