【C/C++ API】C++内存分配和释放函数分析

文章浏览阅读1k次,点赞15次,收藏26次。是一个 C 语言函数,用于分配一块内存,并保证返回的指针地址满足特定的对齐要求。指向的内存块,并使该内存块可用于后续的内存分配。字节,并返回一个指向重新分配后的内存块的指针。之后,我们检查是否分配成功,然后使用该内存,最后在不再需要时释放该内存。是 C 标准库中的一个函数,用于分配一块内存,并保证返回的指针地址满足特定的对齐要求。是 C 标准库中的一个函数,用于重新分配先前分配的内存块的大小。,即要释放的内存块的指针。是 C 标准库中的一个函数,用于动态分配内存,并将分配的内存空间初始化为零。_c++ malloc
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

RxJava源码简单分析

文章浏览阅读214次。source就是我们传递进来的实现ObservableOnSubscribe的逻辑,然后由我们调用Emitter的.next,这里就是 CreateEmitter.next,最后调用到LambdaObserver.next方法,执行回调函数。LambdaObserver代理了onNext, onError, onComplete, onSubscribe四个基本函数接口实现。核心启动方法 subscribeActual(observer);他实现了 subscribeActual方法。
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

【Android 内存泄漏】KOOM 怎么实现线程泄漏的监控?

文章浏览阅读1k次,点赞18次,收藏16次。前面分析了KOOM Java leak、native leak的监控思路,这篇继续分析它线程监控的整体思路。_android 线程监控
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

suspendCoroutineUninterceptedOrReturn函数的实现原理

文章浏览阅读322次,点赞8次,收藏2次。kotlin编译器如下方法,在编译时会把contract契约声明解析成生成 block.invoke(continuation) 字节码调用,内联插入调用的地方。比原有的方法多了一个Continuation $completion参数,这玩意就是编译器干的活,根据上面的契约声明,把block函数内联调用优化到一个函数去。比较弯弯绕绕,需要kotlin反编译去看,以及结合编译器,有兴趣可以去了解kotlin的编译器,都是开源的。_suspendcoroutineuninterceptedorreturn
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

【CMake】Android native模块a调用native模块b,如何配置cmake?

文章浏览阅读460次,点赞3次,收藏7次。Android项目中如何配置cmake,让module a的native代码调用module b的native代码?首先可以看看CMAKE_SOURCE_DIR的具体路径:定义子目录的路径把子模块的cmakelists添加关联接着根据自己项目的具体位置,找到实际上module a的代码路径。接着调用add_subdirectory,添加到对应的路径中。add_subdirectory的主要作用是添加另外一个cmakelist到当前的cmakelisk的搜索目录中。这里需要注意的是,这种情境下使用_android如何调用native
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

SwipeBackLayout递归崩溃分析ViewGroup.resetResolvedLayoutDirection

文章浏览阅读776次,点赞13次,收藏17次。这里我们就明白了,出现递归的原因是如果添加的是自己,这里会获取到自己View child,又调回ViewGroup.resetResolvedLayoutDirection,在这个方法无限递归,直到 Fatal Exception: java.lang.StackOverflowError。关注,表示布局如果是继承的,则重置rtl 属性,主要是处理左右布局方向。阿拉伯国家是从右到左布局,跟我们是反的,所以谷歌引进了这个rtl属性进行管理布局方向。解决办法:在添加view的时候,检查,禁止添加自己。_at android.view.viewgroup.resetresolvedlayoutdirection
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

【Android 内存优化】 native内存泄漏监控方案源码分析

文章浏览阅读1.2k次,点赞22次,收藏26次。Android的native泄漏怎么检测?下面通过研究开源项目KOOM来一探究竟。_android native泄露怎么监控
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

解决新版本android studio断点调试debug卡慢问题

文章浏览阅读375次,点赞5次,收藏2次。卡顿原因是debug默认模式是整个APP包括dual(java+native) ,调试native会导致非常严重的卡顿,这个是android studio高版本的bug,目前没看到解决。因此我们平时开发只需要用java,没必要调试native,所以我们需要修改配置。3.1 从默认的app修改为use default settings。3.2 再选择debugType,选择 java only。最终配置如下,这样最终解决问题。_android studio debug模式卡住
分类: 编程语言 发布时间: 11-06 23:58 阅读次数: 0

【Android 源码】Android源码下载指南

文章浏览阅读743次,点赞3次,收藏5次。这是关于Android源码下载的过程记录。环境:Windows上通过VMware安装的Ubuntu系统。_adb工具包 源码下载
分类: 编程语言 发布时间: 11-06 23:57 阅读次数: 0

Kotlin的CoroutineExceptionHandler 使用的大坑

文章浏览阅读361次,点赞5次,收藏9次。kotlin协程的异常传播体系具有独特性复杂性,本人写代码调试验证,传播规则如下。
分类: 编程语言 发布时间: 11-06 23:57 阅读次数: 0

【Android 内存优化】Koom核心内存指标分析

文章浏览阅读1k次,点赞8次,收藏22次。这就是KOOM在Java层内存监控拿到的内存指标。有了这些指标,可以比较清晰地知道当前机器和进程内存的情况。_android koom
分类: 编程语言 发布时间: 11-06 23:57 阅读次数: 0

深入源码分析 kotlin的CoroutineExceptionHandler机制

文章浏览阅读1.1k次,点赞12次,收藏13次。启动一个协程,然后内部启动子协程,那么最内层如果发生异常,是怎么传递异常的?反编译源码可得以下代码,看一下是怎么传递的。_coroutineexceptionhandler
分类: 编程语言 发布时间: 11-06 23:57 阅读次数: 0

【Android 内存优化】KOOM线程泄漏监控的实现源码分析

文章浏览阅读473次,点赞5次,收藏7次。前面我们通过研究KOOM的开源代码,研究了关于Java层和native层内存泄漏监控的实现原理。还剩下线程泄漏这部分没有进行分析,今天来补全它。整体下来,相信我们对于内存监控在代码上的实现上会有一个较为体系化的了解。_android koom
分类: 编程语言 发布时间: 11-06 23:57 阅读次数: 0

【Java 多线程】从源码出发,剖析Threadlocal的数据结构

文章浏览阅读862次,点赞13次,收藏12次。本文详细剖析了Java的ThreadLocal类的工作原理,包括其内部数据结构(ThreadLocalMap和Entry),以及如何在多线程环境下存储和获取线程私有变量。通过源码解读和实例演示,帮助读者理解ThreadLocal与Thread之间的关系以及其在内存管理中的特点。
分类: 编程语言 发布时间: 11-06 23:57 阅读次数: 0

Android Gralde本地缓存依赖导入maven本地仓库

文章浏览阅读238次。1、android 项目的使用的gradle构建系统,下载的依赖通常在保存在C:\Users\Administrator\.gradle\caches\modules-2\files-2.1。2、在app/build.gradle添加一个copy任务,去掉随机字符串的父目录,拷贝到maven本地仓库目录下。但是这种形式的依赖文件通常都是放在一个随机字符串的父目录上,aar、pom、source、jar包都是。3、sync同步,左边会有个绿色三角箭头,点击运行,选择第一个,执行这个任务即可。_gradle缓存迁移到maven仓库
分类: 编程语言 发布时间: 11-06 23:57 阅读次数: 0

【Android Handler】从源码出发,一步步窥探Handler在Java层的数据结构关系和执行原理

文章浏览阅读1k次,点赞26次,收藏14次。Handler作为消息机制在整个Android系统里面起到了无可替代的作用,我们今天来探讨下这个无比重要的机制的实现细节。
分类: 编程语言 发布时间: 11-06 23:56 阅读次数: 0

gralde依赖缓存转换成maven本地仓库脚本

文章浏览阅读151次。需要按maven的仓库格式创建pom文件,如果有就拷贝,没有则需要创建一个。_idea gradle转变成maven
分类: 编程语言 发布时间: 11-06 23:56 阅读次数: 0

【Android Binder】从源码出发,剖析Binder机制的实现流程

文章浏览阅读1.2k次,点赞19次,收藏14次。在这里我们可以做一个总结:这行代码中创建了BpBinder对象,然后把BpBinder对象作为参数新建了了一个BpServiceManager对象。sm就是这个BpServiceManager对象。一个是BpBinder对象,它的handle值为0,。一个BpServiceManager对象,它的mRemote值为BpBinder对象。而且BpServiceManager实现IServiceManager接口,又有了BpBinder作为通信代表。到这里进行通信的准备做的差不多了。但是还差些什么。_android binder源码分析
分类: 编程语言 发布时间: 11-06 23:56 阅读次数: 0

android studio如何查看gradle编译框架的源码

文章浏览阅读170次,点赞3次,收藏2次。把所有jar包拷贝出来,包括plugins目录下的jar包,一起复制到app/src/lib目录下面,注意要放到一级目录libs下,不要有文件夹。sync一下gradle,就可以看gradle包括android插件的所有项目源码了。二、把 gradle版本的工程jar包导入到app/src/libs目录下。就可以愉快地查看源码了,索引基本都在,都可以索引到打开。写在app/build.gradle的依赖里面。去找到gradle框架主库的缓存,我的是在路径。gradle相关的依赖就导入了项目中。_gradle源码在哪里看
分类: 编程语言 发布时间: 11-06 23:56 阅读次数: 0

【Android ServiceManager】从源码入手,剖析ServiceManager是如何处理客户端的请求的?

文章浏览阅读801次,点赞29次,收藏18次。代码分析到这里,我们总结下,前面代码中ServicManager打开了binder设备,让自己成为manager,接着进入循环并通过ioctl与binder设备进行交互,用于来处理客户端发过来的消息。我们不禁去思考ServiceManager存在的价值是什么。ServiceManager可以通过字符串查找对应的Service,这个与DNS很类似。并且ServiceManager对服务进行了权限控制,使得并非所有服务都能进行注册,这无疑提高了Android的安全性和各种服务的条理性。_bnservicemanager 源码实现
分类: 编程语言 发布时间: 11-06 23:56 阅读次数: 0