内存模型

概述

Java 内存模型 (Java Memory Model) 定义了 JVM 如何正确访问计算机主内存。JMM 指定了不同线程如何以及何时可以看到其他线程写入到共享变量的值,以及如何在必要时同步访问共享变量。

Java 多线程之间通信一般有两种方式: 共享内存消息传递。Java 的并发采用共享内存的方式,共享内存通信方式对于程序员而言总是透明隐式进行的。

JMM 关键技术点都是围绕着多线程的原子性可见性有序来讨论的。JMM 解决了可见性和有序性的问题,而锁解决了原子性的问题。

Java 内存模型的可见性问题的底层实现是通过内存屏障 (memory barriers) 实现。

现代计算机内存模型:

Read More

JVMTI

概要

JVM Tool Interface:JVMTI 本质上是在JVM内部的许多事件进行了埋点。通过这些埋点可以给外部提供当前上下文的一些信息。甚至可以接受外部的命令来改变下一步的动作。
外部程序一般利用C/C++实现一个JVMTIAgent,在Agent里面注册一些JVM事件的回调。当事件发生时JVMTI调用这些回调方法。
Agent可以在回调方法里面实现自己的逻辑。JVMTIAgent是以动态链接库的形式被虚拟机加载的。

主要的功能:

  • 重新定义类。
  • 跟踪对象分配和垃圾回收过程。
Read More

RxJava

概要

使用观察者模式、装饰器模式,类似Java的IO流。将不同的操作符一层层的封装,然后再进行一层层的解封。

基本概念

  • Observable(可观察者,即被观察者)
  • Observer (观察者)
Read More