毕业 10 年,也成了 Android 10 年老开发|紧张充实的 2023

first.jpeg

其实,上个月就列好了大纲,奈何后来突然忙了起来,中间还加急了篇技术回顾,导致这篇总结一直欠着。虽然最近的节奏还是比较赶,但想着都 2024 年 1 月中了,还是尽快把该做的事情了了。

2023 年,对我来说是非常重要的一年:

  • 这一年,我毕业满 10 年。拿到了房子,带着家人搬进了梦寐以求的 house
  • 同时也是我从事 Android 的第 10 个年头。继续在 Android 平台上发光发热,不断尝试着新的东西、新的可能

让我花点文字与你分享我这一年的所得所思!

26 篇文章

相较于 2022 年,2023 年生活上没那么多的事情,可利用的时间多了一些。一共输出了 26 篇原创文章,比 2022 年多了 5 篇。其中有 4 篇获得了 Google 转载,还获得了 2023 下半年投稿第 1 名。

1.jpeg

聚焦于 Android 14 升级的有 7 篇:

完善 AndroidAutomotiveJava 源码知识的 10 篇文章:

### Android 垃圾回收机制 (GC) 的工作原理及实现 #### 1. 自动垃圾回收概述 Android 中的垃圾回收机制基于 Java 虚拟机(Dalvik 或 ART)的设计理念,采用了自动化的内存管理方案来处理不再使用的对象。这种设计能够有效预防手动释放内存可能引发的错误,例如悬空指针等问题[^3]。 #### 2. GC 的基本流程 Android 的 GC 运行遵循一种称为 **Mark-and-Sweep** 的算法逻辑。具体来说,它会从一组被称为 **GC Roots** 的对象出发,扫描整个堆空间,并标记所有可到达的对象为存活状态。未被标记的对象会被视为垃圾并予以回收[^5]。 - **Mark 阶段**: 所有与 GC Roots 可达的对象都会被打上 “存活” 标签。 - **Sweep 阶段**: 将那些未能在 Mark 阶段中标记的对象清除掉。 #### 3. 分代收集策略 类似于 JVM,Android 的 GC 同样实现了分代收集的思想。堆内存通常划分为两个主要区域:轻代(Young Generation)和年老代(Old Generation)。不同类型的对象依据生命周期长短分配至相应区域: - 轻代存储短寿命对象,这些对象往往很快就会变不可访问的状态; - 年老代则用于保存长期存活的对象。 针对这两个分区,分别采用不同的垃圾回收算法以提升效率。比如,在轻代频繁执行 Minor GC 来快速清理短期无用数据;而在年老代仅当必要时才触发 Major GC 或 Full GC[^1]。 #### 4. 主要的 GC 类型及其特点 以下是几种常见的 Android GC 类型以及它们的特点: - **Serial Collector** - 单线程操作简单高效但暂停时间较长适合单核设备或小型应用环境。 - **Parallel/Throughput Collector** - 多线程并发运行从而缩短总耗时时长适用于多处理器架构下的高性能需求场景。 - **Concurrent Mark Sweep(CMS)** - 努力降低全局停顿时间以便于实时性较高的场合下使用不过存在碎片化风险。 - **Garbage First(G1)** - 结合预测模型动态规划回收区域平衡吞吐量与延迟表现特别推荐给大容量内存配置的应用程序。 #### 5. 性能优化建议 为了减少因 GC 导致的卡顿现象影响用户体验,开发者可以从以下几个方面着手改进代码质量: - 减少不必要的对象创建频率尤其是循环体内实例化新变量的行为应尽量避免; - 利用手动控制工具如 `System.gc()` 请求即时启动清洁过程需谨慎行事因为这可能会适得其反增加额外负担; - 关注大型图片加载等高消耗资源的操作确保及时释放关联句柄防止过度占用物理RAM; - 定期分析 Profiler 数据定位潜在瓶颈所在位置进而采取针对性措施缓解压力源[^4]。 ```java // 示例:合理重用Bitmap对象而非每次都新建 public void reuseBitmap(Bitmap bitmap){ if(bitmap != null && !bitmap.isRecycled()){ bitmap.recycle(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechMerger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值