首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
芦半山
掘友等级
公众号:芦半山
获得徽章 22
动态
文章
专栏
沸点
收藏集
关注
作品
赞
7
文章 7
沸点 0
赞
7
返回
|
搜索文章
最新
热门
Kernel | Log中的速率限制
最近帮其他组的同事看了个有趣的问题,原因恰好和kernel log(又被称为kmsg/dmsg)中的速率限制有关。虽然知识点并不复杂,但鉴于自己寻找资料时的痛苦经历,还是决定将细节记录于此,以便后人查
ART虚拟机 | Android应用中SIGSEGV信号的处理流程
SIGSEGV是信号11,其在内存访问错误时产生。信号产生后需要送往用户空间进行处理,纯native的进程由`debuggerd_signal_handler`进行处理,应用进程(zygote及其子进
ART虚拟机 | 锁
Java中对临界区的锁定通常用synchronize代码块完成,因此标题中的“锁”实际上是对synchronize关键字的剖析。另外我们可以说,锁的状态和对象关联。亦或者,每个对象天生都是一把锁。
ART虚拟机 | JNI静态注册和动态注册
注册的本质是建立(Java层)native方法和(Native/C++层)JNI函数之间的一对一关系。静态注册指的是映射规则预先设定,一个native方法名可以转换成一个唯一的JNI函数名。动态注册的
ART虚拟机 | Java对象和类的内存结构
当我们通过new创建一个Java对象时,虚拟机会安排内存分配的所有工作。但一个Java对象在内存中到底长什么样?它的实例对象放在哪里?继承关系如何处理?这些问题对于大家通常是陌生的。本文试图通过图表示
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函…
下一页
个人成就
优秀创作者
文章被点赞
1,900
文章被阅读
372,148
掘力值
8,486
关注了
1
关注者
1,849
收藏集
0
关注标签
1
加入于
2019-02-22