Kotlin/Native

最近 KMP 或者说 KMM 在移动端挺火,我非常好奇它是如何跨端的

看了一下官方文档,只知道是通过 LLVM 把 Kotlin 转为 IR 再转为目标平台二进制。这部分我目前还没去分析,因为 LLVM 相关的知识我实在知之甚少,后面也会去补足

fp unwind

为了公司内部写一篇软文,所以这篇文章重写了一下~~

正文

今天给大家分享一种 arm64 平台下栈回溯的方式 —— fp(frame pointer) 回溯,同时会介绍一些基础概念和实现原理

首先,我们需要知道栈回溯是做什么的?
其实就是用于获取当前 thread 的调用堆栈的

资源去重

最近不知道为什么,我司又开始缩减包体积了,在这个 app 都 100-200M 的年代,在这个 5G 遥遥领先的年代,不知道卷个啥?

那问题不大,既然有需求,我们照做便是

前置思考

Android 包体积由多方面构成,这个我之前的文章里也有说过,所以包体积缩减的手段有很多,这个就不一一介绍了

ToyJVM 学习

前段时间看了下 Elk(十分简单的 JS VM,其实算是个 parser + interpreter 吧)的代码,学到了一些计算机基础的东西。

比如,我写代码这么久,甚至不知道 double 的内存结构和 7FF 代表什么。比如,因为没有系统学习过编译原理等等,没有 opcode 相关的概念,如何设计 interpreter(又想回去读书了···)。

Elk JSEngine 学习

一直想学习一下如何写一个 VM,但是苦于各种成熟 VM 代码量庞大,阅读困难,无从学起

即使 lua 的古老版本的代码,对于我这种没有任何编译背景和语言设计背景的人来说,很难理解源码在写什么、在处理什么问题

GC/JIT 抑制

概述

所谓 Android GC/JIT 抑制,即是将 Android GC(部分)/JIT Task 处理任务的过程(Run 方法) hook,强行 sleep 一段时间。因为 JIT 和 GC 目前均为单线程执行,所以没有并发问题,也刚好阻塞后续任务。

再再再看 startActivity 启动流程

前言

最近遇到了一个有意思的问题,为了让首页更快的展示出来,将首页的请求提前到了 Application onCreate 阶段。但是带来了一个问题,请求的频次大大增加了,且对于后端来说,首页的请求还是比较消耗资源的。

RN 和 fbjni

前言

最近帮 RN 业务方查内存泄漏问题,发现了 fbjni 这个库挺有意思的

正好借助 RN 源码例子,讲述一下 fbjni 是如何控制 java 和 c++ 层对象的生命周期的

源码阅读

下面会贴一些 RN 中的源码 和 fbjni 的源码,不用关心 RN 源码中的对象是做什么的,我们这里只关注对象如何被创建和如何被释放的

Fresco Bitmap 潜在问题

最近发现线上有一些 used recycled bitmap crash

似乎是问题一直存在,但是近期版本增多了,不过不是我负责,也不好多说什么

其实我觉得主要是造轮子的对于轮子本身理解不够深刻,导致的问题

JNI Pending Exception

今天遇到了一个 jni pending exception,好在之前也遇到过,所以我当即就知道肯定是我这行 jni 调用之前就已经出现了 java exception

但是为什么会走到我的代码中?这就是个巧合的事情了