#1006androidstudio运行频繁触发GC回收导致卡顿

1、android studio在运行的时候各种点击操作存在的卡顿
原因:
AS限制了Java虚拟机启动的内存大小,限制了最大堆内存,当AS运行越久,内存越不足的时候,就会频繁的触发GC,AS就自然会卡起来了,严重的直接黑屏
解决方法:
一、找到AndroidStudio安装目录下的studio.vmoptions配置文件
路径为安装目录下的\bin文件夹里,里面有两个.vmoptions文件
其中,studio.vmoptions配置文件是32位系统,studio64.vmoptions是64位系统的配置文件
二、修改.vmoptions文件配置
我的机子是64位的,这里以64位为例
修改前的配置文件:
studio64.exe.vmoptions

我们只需要修改其中的前四项就好
-Xms2048m
-Xmx2048m
-XX:MaxPermSize=2048m
-XX:ReservedCodeCacheSize=1024m
三、重启AndroidStudio
关闭AS再重启
Android Studio运行速度慢的问题就会有所改善
注意:设置-Xms、-Xmx、-XX的参数大小要根据自己电脑内存的大小而定
2、在使用android studio的时候gradle编译速度慢
解决办法一
1,开启守护进程。
这一点在许多问答网站,博客等,都会提到。通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程。通过在~/.gradle(如果是windows下,则为用户目录下的.gradle文件夹,如果配置过 GRADLE_USER_HOME,则为该目录)中编辑(如果没有则创建)gradle.properties,加入以下配置,可以让所有项目在构建时都开启守护进程:

2,开启并行编译
这一点同上,也是常见的加快编译速度的方法。在多项目(或多模块)编译时它会很有用。同样在~/.gradle/gradle.properties中加入:

gradle.properties文件
3,使用新版的gradle和Android gradle plugin。
然而,在加上这两行之后,随着项目开发的逐渐复杂,引入的库也越来越多,项目本身也要增加一些productFlavor,速度又开始慢起来。后来Android Studio升级,Gradle升级,看到Gradle 2.4的升级说明上提到提高了gradle的构建速度,于是用了新版的Gradle,果然提高了些许速度。
编辑项目根目录下的build.gradle,把android gradle plugin更新到新版本:

3、 第一次安装启动android studio会很慢

解决办法

1)进入刚安装的Android Studio目录下的bin目录。找到idea.properties文件,用文本编辑器打开。
2)在idea.properties文件末尾添加一行: disable.android.first.run=true ,然后保存文件。
3)关闭Android Studio后重新启动,便可进入界面。

4、Android Studio在创建项目是一直处于building “project name”gradle project info的解决办法

由于知识有限,现在我自想到的就这么多

欢迎大家补充

ps:最新版本的Android studio2.3基本上已经解决了上面提到的问题,不需手动更改。更新方法 HELP----->CHECK FOR UPDATES

Android Studio 中使用 System Trace 工具可以帮助开发者分析系统级别的性能问题,特别是在定位应用卡顿时非常有用。System Trace 会记录设备上的活动,并生成 `.trace` 文件,这些文件可以用于分析 CPU 使用率、线程状态、系统资源调度等信息。 ### 启用 System Trace 1. **打开 Android Studio Profiler** 在 Android Studio 的顶部菜单中选择 **Run > Profile 'app'** 来启动应用并进入 Profiler 界面。 2. **开始记录 System Trace** 在 Profiler 窗口中,点击 **CPU 时间线** 上的 "Record" 按钮(圆形图标),然后选择 **System Trace (API 28+)** 作为记录配置。接着点击 **Start Recording** 开始捕获跟踪数据。 3. **执行需要检测的操作** 在应用中执行可能导致卡顿的操作,例如页面切换、动画播放或复杂计算等。 4. **停止记录并保存结果** 完成操作后,再次点击 "Stop Recording" 按钮,Profiler 会自动加载刚刚记录的跟踪数据。 ### 分析 System Trace 数据 1. **查看 CPU 核心调度情况** 在 System Trace 结果中,可以看到不同 CPU 核心上运行的任务。如果主线程(通常是 `main` 线程)被长时间占用或者频繁阻塞,这可能就是导致卡顿的原因之一 [^2]。 2. **检查线程状态** 查看主线程的状态变化,特别是是否有长时间的休眠或等待事件。如果主线程处于 **Runnable** 状态但未被调度执行,则可能是由于 CPU 资源不足;如果主线程处于 **Sleeping** 或 **Uninterruptible Sleep** 状态,则可能存在 I/O 阻塞问题 [^4]。 3. **识别高负载任务** 在时间线上找到 CPU 使用率较高的时间段,观察对应的任务和调用栈。如果某个特定函数或操作占用了大量 CPU 时间,这可能是优化的重点 [^1]。 4. **结合自定义事件进行分析** 可以通过在代码中添加自定义事件标记来更精确地定位问题所在。例如: ```java Trace.beginSection("CustomEventName"); // 执行相关操作 Trace.endSection(); ``` 这些自定义事件将与系统事件一起显示在 System Trace 报告中,有助于快速定位具体的问题区域 [^5]。 5. **利用 Perfetto 提升分析能力** 自 Android API Level 28 起,System Trace 使用了 **Perfetto** 作为后台引擎,提供了更强的数据收集能力和更高的精度。这意味着可以获取更详细的系统级信息,如 SurfaceFlinger 活动、Binder 调用等,帮助进一步诊断卡顿原因 [^3]。 6. **优化建议** - 如果发现主线程上有大量的 UI 绘制工作,考虑减少布局层级或优化绘图逻辑。 - 对于耗时的 I/O 操作(如数据库查询、网络请求),确保它们不在主线程上执行。 - 减少不必要的对象创建,避免频繁触发垃圾回收GC),因为 GC 也可能引起短暂的卡顿 [^1]。 通过上述步骤,可以有效地使用 Android Studio 的 System Trace 工具来定位和解决应用中的卡顿问题。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值