Cyrus Land
  • 首页
  • 归档
  • 标签
  • 关于

Uncaught Exception Handling

测试根据 Thread.setDefaultUncaughtExceptionHandler 的方法文档 Uncaught exception handling is controlled first by the thread, then by the thread’s ThreadGroup object and finally by the default uncaught excepti
2021-06-18
#uncaught exception #exception #崩溃 #崩溃日志 #crash

浅析 IO 框架:Okio

基本概念 Okio java.io ByteString String Buffer ByteArray Source InputStream Sink OutputStream Segment SegmentPool ByteString虽然 okio.ByteString 对标的是 java.lang.String,但是它操作的对象却是 String 内部
2021-06-12
#nio #okio #io

深入探索 java.io 和 nio

FileInputStream/FileOutputStreamFileInputStream 和 FileOutputStream 都属于“流式” API,就像流水(Stream)一样只能朝着一个方向读写,不能后退 FileInputStream 相当于以只读模式读文件:open(O_RDONLY) -> read -> close(fd) FileOutputStream 相当于以
2021-06-05
#ART #nio

老罗的 Android 之旅阅读笔记(Dalvik/ART 虚拟机篇)

DalvikDalvik HeapDalvik 的堆空间分为 Zygote Heap 和 Active Heap Android 系统的第一个 Dalvik 虚拟机是由 Zygote 进程创建的。应用程序进程是由 Zygote 进程 fork 出来的。也就是说应用程序进程使用了一种 写时拷贝技术(COW)来复制了 Zygote 进程的地址空间。这意味着一开始的时候,应用程序进程和 Zygote 进
2021-05-28
#Dalvik #ART #JVM #VM

【转】mmap 和零拷贝

平时在面试中你肯定会经常碰见的问题就是:RocketMQ 为什么快?Kafka 为什么快?什么是 mmap? 这一类的问题都逃不过的一个点就是 零拷贝,虽然还有一些其他的原因,但是今天我们的话题主要就是零拷贝。 传统 IO在开始谈零拷贝之前,首先要对传统的 IO 方式有一个概念。基于传统的 IO 方式,底层实际上通过调用 read() 和 write() 来实现。 通过 read() 把数据从硬盘
2021-05-21
#mmap #内存,虚拟地址

【转】网络 IO 演变发展过程和模型介绍

在互联网中提起网络,我们都会避免不了讨论高并发、百万连接。而此处的百万连接的实现,脱离不了网络 IO 的选择,因此本文作为一篇个人学习的笔记,特此进行记录一下整个网络 IO 的发展演变过程。以及目前广泛使用的网络模型。 网络 IO 的发展在本节内容中,我们将一步一步介绍网络 IO 的演变发展过程。介绍完发展过程后,再对网络 IO 中几组容易混淆的概念进行对比、分析。 ​ 网络 IO 的各个发展阶段
2021-05-11
#epoll #select #poll

KOOM - 利用子进程 dump hprof

不冻结 APP 的 dump hprof在 LeakCanary 浅析 和 Matrix - ResourcesCanary 浅析 这两篇文章里,介绍了检测内存泄漏的两种相似的思路: WeakReference + ReferenceQueue + 延迟 5s 检查是否被 GC WeakReference + ConcurrentLinkedQueue,子线程轮询的方式每隔 1m 检查队列里的对
2021-05-07
#内存优化,OOM #APM

Matrix - TraceCanary 浅析

捕获掉帧/卡顿什么是掉帧/卡顿 什么是卡顿,很多人能马上联系到的是帧率 FPS (每秒显示帧数)。那么多低的 FPS 才是卡顿呢?又或者低 FPS 真的就是卡顿吗?(以下 FPS 默认指平均帧率) 其实并非如此,举个例子,游戏玩家通常追求更流畅的游戏画面体验一般要达到 60FPS 以上,但我们平时看到的大部分电影或视频 FPS 其实不高,一般只有 25FPS ~ 30FPS,而实际上我们也没有觉得
2021-04-26
#APM #性能优化

Matrix - ResourcesCanary 浅析

Activity 的泄漏检测跟 LeakCanary 一样,使用 ActivityLifecycleCallbacks 监听 Activity.onDestroy() 事件,从而收集到已销毁的 Activity 对象 public class ResourcePlugin extends Plugin { @Override public void start() 
2021-04-23
#内存优化,OOM #APM

深入 OOM

堆内存分配失败导致的 OOM度量采用下述 API 来度量 APP 或系统的内存使用情况 类别 API 说明 APP Runtime.maxMemory() JVM 可以从系统那申请到的内存的最大值,ActivityManager.getMemoryClass() 和 ActivityManager.getLargeMemoryClass() 其中之一,超过此阈值会发生 OOM R
2021-04-16
#OOM
1234567

搜索

Hexo Fluid