javap-cjava源文件名------就可以反汇编了
.java文件------------>.class文件------------>JVM解析
通过clazz.newInstance()方法创建一个该类的对象
改变计数器的值来选取下一条需要执行的字节码指令
Java方法执行的内存模型
包含多个栈帧
递归为什么会出现StackOverFlowError
虚拟机栈过多会引发OutOfMemoryError
永久代会为GC带来不必要的复杂性
GC管理的主要区域
JVM三大性能调优参数-Xms-Xmx-Xss的含义
分为对象面和空闲面
对象在对象面上创建
存活的对象被从对象复制到空闲面
将对象面的所有对象内存清除
顺序分配内存
简单高效
适用于对象存活率低的场景
不用设置两块内存互换
垃圾回收算法的组合拳
按照对象生命周期的不同划分区域以采用不同的垃圾回收算法
FullGC和MajorGC
Stop-the-WorldJVM由于要执行GC而停止了应用程序的执行
任何一种GC算法中都会发生
Safepoint分析过程中对象引用关系不会发生变化的点
安全点数量适中
对象在有用但非必需的状态
可以用来实现高速缓存
适用于偶尔被使用且不影响垃圾收集的对象
不会决定对象的生命周期
任何时候都可能被垃圾回收器回收
必须何引用队列ReferenceQueue联合使用
Zset通过分数为集合中的成员进行从小到大的排序
使用Keys线上业务的影响
keyspattern:查找所有符合给定模式pattern的key
keys指令一次性返回所有匹配的key
BLPOPkey[key...]timeout:阻塞直到队列有消息或者超时
使用pub/sub主题订阅模式
自动触发RDB持久化的方式
执行DebugReload
保存写状态
记录下除了查询以外的所有变更数据库的指令
以append的形式追加保存到AOF文件中
调用fork,创建一个子进程
主进程持续把新的变动同时写到内存和原来的AOF里
使用新的AOF文件替换掉旧的AOF文件
有顺序依赖的指令建议分批发送
slave发送sync命令到master
master将保存的数据快照期间接收到的写命令缓存起来
master将这期间收集的增量命令发送给slave端
master接受到用户的操作指令。判断是否需要传播到slave
将操作记录追加到AOF文件
将缓存中的数据发送给slave
RedisSentinel解决主从同步Master宕机后主从切换的问题
种子节点定期随机向其他节点发送节点列表以及需要传播的消息