JVM大纲

JVM重点 自动内存管理 java内存区域 垃圾收集器和内存分配策略 虚拟机性能监控和故障处理工具 调优案例 虚拟机执行子系统 类文件结构 虚拟机类加载机制 虚拟机字节码执行引擎 类加载及执行子系统的案例与实战

March 14, 2023 · 1 min

undo log了解

undo log 用来保证原子性 1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。 2.undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。

March 12, 2023 · 1 min

io模型

单线程模型 accept函数如果没有事件,则会阻塞,影响其他请求 。。。。。 多进程模型 。。。。。 套接字 用网络地址和端口来唯一标识一个实体。那么,用来唯一标识通信两端的数据结构就叫做套接字 ...

March 11, 2023 · 6 min

jvm垃圾收集器和内存分配策略

序言 今天讲的是jvm垃圾收集器是如何回收垃圾的,现在我们的生产环境动不动就是几十G,每时每刻产生的垃圾对象也会很多,所以回收他们也是JVM重中之重的任务。 ...

March 9, 2023 · 6 min

锁升级过程

java锁升级过程 前置知识:对象头中的markword(32字节)的最后两个字节用来表示锁的状态 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 (无法退化) 无锁状态 会被标志无锁状态,jvm启动4秒后会变为偏向锁状态(BiasedLockingStartupDelay jvm参数 默认4秒) 偏向锁,最后两个字节会标志为偏向锁,且还会有块内存区域标志着线程id的信息,下次线程过来时,直接将锁交出,当有竞争时,偏向锁会升级为轻量级锁 轻量级锁,采用的是cas操作,cas成功的线程获取到锁,其他的线程会自旋,等待锁释放,轻量级锁实现的过程是:线程的虚拟机栈中会创建一个lock record内存块用来保存对象头markword副本,对象头会记录lock record的地址,如果自旋线程数量超过一个,那么就会升级为重量级锁 重量级锁 jvm层面,使用monitor enter 和 monitor exist命令加锁,其他线程挂起

February 8, 2023 · 1 min
总访问量 总访客数