JVM
wanghaichao1234
这个作者很懒,什么都没留下…
展开
-
JVM系列 四 synchronized 锁膨胀
synchronized 同步锁有四种状态:无锁、偏向锁、轻量级锁、重量级锁,他们会随着竞争情况逐渐升级,此过程不可逆,称之为锁膨胀。所以 synchronized 锁膨胀其实就是无锁 → 偏向锁 → 轻量级锁 → 重量级锁的一个过程。 偏向锁(Biased Locking) 偏向锁是为了在无多线程竞争的情况下尽量减少不必要的轻量级锁执行路径,因为轻量级锁的获取及释放依赖多次CAS原子指令,而偏向锁只需要在置换ThreadID的时候依赖一次CAS原子指令。其实在大多数情况下,锁不仅不存在多线程竞争,而.原创 2021-07-14 10:45:12 · 325 阅读 · 0 评论 -
JVM系列 三 垃圾收集器
垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。注意,“标原创 2021-05-31 21:05:56 · 42 阅读 · 0 评论 -
JVM系列 二 对象创建与内存分配
原创 2021-05-31 18:51:58 · 58 阅读 · 0 评论 -
JVM系列 一 类加载机制
类加载的时机 隐式加载 new 创建类的实例, 显式加载:loaderClass,forName等 访问类的静态变量,或者为静态变量赋值 调用类的静态方法 使用反射方式创建某个类或者接口对象的Class对象。 初始化某个类的子类 直接使用java.exe命令来运行某个主类 ...原创 2021-05-31 17:58:32 · 66 阅读 · 0 评论