首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
芦半山
掘友等级
公众号:芦半山
获得徽章 22
动态
文章
专栏
沸点
收藏集
关注
作品
赞
7
文章 7
沸点 0
赞
7
返回
|
搜索文章
最新
热门
Android Framework | 一种新型的应用启动机制:USAP
一说到应用启动,估计大伙儿就会想到zygote进程。确实,正如其中文释义“受精卵”一样,其主要的作用就是孵化出一个又一个的应用进程。 传统的应用启动模式由system_server中的AMS接收请求,之后通过socket告知zygote,让其完成fork动作,这样新进程便创建出…
Android Native | Scudo内存分配器
在Android世界中,Native堆内存的分配通常由malloc负责。即便是面向对象的new,其底层也是malloc。那当我们调用malloc/free来分配/释放堆内存时,内存到底从哪里来,又归到何处去?以及这个过程是否会涉及内存的分割和碎片的合并?负责这所有工作的,我们称…
ART虚拟机 | 如何让GC同步回收native内存
GC用于Java堆内存的回收,这是人尽皆知的事实。然而现在有些Java类被设计成牵线木偶,Java对象只存储一些“线”,其真实的内存消耗全都放到了native内存中。譬如Bitmap。对它们而言,如何自动回收操纵的native内存成为一个亟须解决的问题。 想要自动回收,必须依赖…
ART虚拟机 | Finalize的替代者Cleaner
C++中的对象释放由程序员负责,而Java中的对象释放则由GC负责。如果一个Java对象通过指针持有native对象,那么应该何时释放native对象呢?靠原有的GC自然搞不定,因为虚拟机无法得知这个Java对象的long型字段是不是指针,以及该指向哪个native对象。 早先…
ART虚拟机 | JNI调用的中间环节
市面上讲述JNI的文章,大多只介绍使用规则和注册方式,比如native方法和JNI函数之间参数应该如何对应,如何转换;或者静态注册和动态注册应该如何操作,各有什么优劣,等等。但看完这些文章,我依然存在一个疑惑:当我们在Java中调用native方法时,为什么瞬间就跳到了JNI函…
ART虚拟机 | GC的触发时机和条件
Java对象的创建由Allocator负责,回收由Collector负责。从Android O开始,对于前台应用默认的GC Collector是CC(Concurrent Copying) Collector,与之相匹配的Allocator则是Region-based Bump…
Binder | 异常处理机制
两个进程之间若是要进行Binder通信,那么发起通信的一端我们就称它为Client进程。Client进程调用每一个代理对象的方法,本质上都是一次跨进程通信。如果这个方法是同步方法(非oneway修饰),那么此调用过程将会经历如下几个阶段。 对应用工程师而言,他只会看到浮在海面的…
Binder | AIDL中inout的本质
这是一篇短文,用于阐述一个简单却又容易被人忽略的知识点。 毛主席在实践论中告诉我们:“你要知道梨子的滋味,你就得变革梨子,亲口吃一吃。”这句话翻译成程序员的行话就是:“Read the fucking source code.” AIDL中inout概念的理解同样如此,很多人认…
Binder | 内存拷贝的本质和变迁
说起Binder的内存拷贝,相信大多数人都听过“一次拷贝”:相较于传统IPC的两次拷贝,Binder在数据传输时显得效率更高。 其实不少人在面试时都能回答出上面这句话,但若是追问他更多细节,估计又哑口无言了。 其实内存拷贝的概念既简单又复杂。简单是因为它功能单一,而复杂则在于不…
工具介绍 | ASAN和HWASAN原理解析
由于虚拟机的存在,Android应用开发者们通常不用考虑内存访问相关的错误。而一旦我们深入到Native世界中,原本面容和善的内存便开始凶恶起来。这时,由于程序员写法不规范、逻辑疏漏而导致的内存错误会统统跳到我们面前,对我们嘲讽一番。 这些错误既影响了程序的稳定性,也影响了程序…
下一页
个人成就
优秀创作者
文章被点赞
2,040
文章被阅读
388,627
掘力值
8,899
关注了
1
关注者
1,905
收藏集
0
关注标签
1
加入于
2019-02-22