JVM总结
JVM 地位? JVM 是 Java 的核心,是 Java 可以一次编译到处运行的本质所在。 .java 文件通过 javac 编译成.class 字节码文件 字节码通过类加载器加载解析类 JVM 运行在各个平台,屏蔽了平台的差异性,让 Java 一次编译到处运行 JVM 的组成 JVM 由四大部分组成:ClassLoader,Runtime Data Area,Ex...
JVM 地位? JVM 是 Java 的核心,是 Java 可以一次编译到处运行的本质所在。 .java 文件通过 javac 编译成.class 字节码文件 字节码通过类加载器加载解析类 JVM 运行在各个平台,屏蔽了平台的差异性,让 Java 一次编译到处运行 JVM 的组成 JVM 由四大部分组成:ClassLoader,Runtime Data Area,Ex...
dex 文件结构 什么是 dex 文件? 能够被 dvm 识别,加载并执行的文件格式 如何生成一个 dex 文件 IDE 自动生成 手动通过 dx 命令生成 手写调用 javac 生成 class 文件 javac -target 1.8 -source 1.8 Temp.java 调用 dx.bat 生成 dex 文件 dx --dex --o...
class文件结构 class 文件介绍 什么是 class 文件? 能够被 JVM 识别,加载并执行的文件格式;很多语言可以生成 class 文件(Java、Scala、Python、Groovy、Kotlin)。Java 之所以能够跨平台运行,是因为 Java 虚拟机可以载入和执行同一种平台无关的字节码。也就是说,实现语言平台无关性的基础是虚拟机和字节码存储格式,虚拟机并不关心 C...
KOOM KOOM 原理 如何监控内存并 dump 定时轮询监控当前内存是否达到最大内存的阈值或者内存连续增加多少次;为什么不使用主动 GC 的方式,GC 是 stop-the-world 会让进程卡死,频繁的 GC 会造成用户感知的明显卡顿,线上监控不需要太过精准。 如何 dump 内存堆栈 通过开启子进程的方式 dump 进程的 hprof,因为 Copy On Write 技...
BlockCancary BlockCanaryEx https://github.com/seiginonakama/BlockCanaryEx
Glide 用法 Glide 加载本地图片资源&网络图片 网络图 ImageView imageView = findViewById(R.id.image_view); String url = "https://www.niwoxuexi.com/statics/images/nougat_bg.png"; Glide.with(context) .load...
Fresco 之 DataSource https://www.fresco-cn.org/docs/datasources-datasubscribers.html 静态图 DataSource public static void getShareBitmapFromDataSource(Context context, final String url, final ShareF...
Fresco 基础 Fresco 是一个强大的图片加载组件。Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和 CPU 时间,它含有 3 级缓存设计(2 级内存,1 级文件)。Fresco 中设计有一个叫做 Drawees 模块,方便地显示 loading 图,当图片不再显示在屏幕上时,及时地释放内存...
concatXXX concat 操作符 concat 它会连接多个 Observable,并且必须要等到前一个 Observable 的所有数据项都发送完之后,才会开始下一个 Observable 数据的发送 将多个 Observable 合并成一个,zip 是多个 Observable 合并。 多个 Observable,依次合并各个 Observable。当中有 Obser...
filter 过滤 false 的数据 接受一个参数,让其过滤掉不符合我们条件的值 返回 true 的数据往下走,返回 false 的数据被过滤掉 案例: private void filterClick() { Observable.just(90, 1, 20, 65, -5, 7, 19) .filter(new Predicate&l...