栈
定义
- 每个线程运行时所需要的内存, 称为虚拟机栈
- 每个栈由多个栈帧(包含参数, 局部变量, 放回值)组成, 对应着每次方法调用时所占用的内存
- 每个线程只能有一个活动栈帧, 对应着当前正在执行的那个方法
堆
定义:
- 通过new关键字, 创建对象都会使用堆内存
特点: - 它是线程共享的, 堆中对象都需要考虑线程安全的问题
- 有垃圾回收机制(不在被引用的对象会被回收
堆内存溢出: - 不断产生对象, 并且这些对象不断被使用(不能被作为垃圾被回收), 一旦堆内存内耗尽也就是溢出
方法区
- 所有java虚拟机线程的共享的区, 它存储跟类相关的信息, 类的成员变量, 方法数据, 成员方法及构造器方法的代码部分(特色方法, 类的构造器), 运行时常量池
- 在虚拟器启动时创建, 逻辑上是堆的组成部分(概念), 不同厂商有不同实现(不强制), jdk1.8之前实现方法是永久代(堆内存的一部分), jdk1.8之后用元空间实现使用本地内存(操作系统)
- 也会导致内存溢出
我负责的主要是门店管理和收银端服务
CAP 定理:
Consistency (一致性):
Availability (可用性):
Partition Tolerance (分区容错性):
BASE理论
BASE:
BA 基本可用 允许必要时牺牲部分可用,保障一致性
S 软状态 允许存在不影响整体的中间状态
E 最终一致性
Basically Available(基本可用,必要时可牺牲部分可用,成全一致性),Soft state(软状
态,充许存在中间状态但不影响整体),和 Eventually consistent(最终一致性)。