JVM
文章平均质量分 96
月芽之上
这个作者很懒,什么都没留下…
展开
-
JVM--synchroized以及锁升级
synchroized以及锁升级介绍原创 2021-07-31 18:38:47 · 306 阅读 · 1 评论 -
JVM 多线程高并发--synchroized
1.synchroized 基本用法1.1语义 原子性:确保线程互斥的访问同步代码 可见性:保证共享变量的修改能够即时可见,其实通过对Java内存模型中“对一个变量unlock操作之前,必须同步到主内存中;如果对一个变量进行lock操作,则将会清空工作内存中此变量的值,在执行引擎使用此变量前,需要重新从主内存中load操作或者assign操作初始化变量值”来保证。 有序性:有效的解决重排问题,即“一个unlock操作先行发生(happen-before)于后面对同一个锁的loc原创 2020-05-28 23:10:54 · 895 阅读 · 2 评论 -
JVM-- Happens-before(先行发生原则)
happens-before的定义先行发生是Java内存模型中定义的两项操作数之间饿的偏序关旭,如果操作A先行发生于操作B,其实就是在发生操作B之前,操作A产生的影响能被操作B观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等。 先行发生是判断是否存在竞争、线程是否安全的主要依据,依据这个原则,我们可以通过几条规则一揽子解决并发环境下两个操作之间是否可能存在冲突的所有问题。特性程序顺序性规则一个线程中的每个操作,happens-before于该线程中的任意后续操作。简单来原创 2020-05-28 22:42:41 · 595 阅读 · 1 评论 -
JVM--Java对象内存布局
1.Java对象内存布局在JVM中,对象在内存中的布局分为三块区域:对象头、实例数据、对其数据。如下图所示: 长度 内容 说明 32/64 bit Mark Word 存储对象的HashCode或者锁信息等 32/64bit Class Metadata Address 存储对象类型数据的指针 32/原创 2020-05-28 22:36:49 · 775 阅读 · 1 评论 -
JVM -Java内存模型以及内存屏障深入解读(Java merory model)
1.Java内存模型1.1主内存与工作内存java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量存储到内存和从内存中取出变量值这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私有的不会被共享,自然就不会存在竞争问题。主内存(Main memory):此处的主内存与物理硬件得主内存名字一样,两者也可以互相类比,但此处仅是虚拟机内存得一部分。原创 2020-05-17 14:47:03 · 321 阅读 · 10 评论 -
OopMap 和 RememberedSet
OopMap 用于枚举 GC Roots,记录栈中引用数据类型的位置。记录栈上本地变量到堆上对象的引用关系。其作用时,垃圾收集时,收集线程会堆栈上的内存进行扫描,看看哪些位置存储了Reference类型。如果风险某个位置确实存的时Reference类型,就以为着它锁引用的对象这一次不能被回收。问题,栈上的本地变量表里面只有一部分数据时Reference类型的,那些非Reference类型的数据...原创 2020-04-13 10:07:07 · 736 阅读 · 1 评论 -
Card Table 卡表
因何而生现代JVM,堆空间通常被划分为新生代和老年代。由于新生代的垃圾收集通常很频繁,如果老年代对象引用了新生代的对象,那么,需要跟踪从老年代到新生代的所有引用,从而避免每次YGC时扫描整个老年代,减少开销。对于HotSpot JVM,使用了卡标记(Card Marking)技术来解决老年代到新生代的引用问题。具体是,使用卡表(Card Table)和写屏障(Write Barrier)来...原创 2020-04-13 09:51:19 · 1311 阅读 · 2 评论 -
Java JVM 内存分配与回收策略
对象的内存分配,往大的方向讲。就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型饼间接栈上分配),对象主要分配在新生代的Eden 区上,如果启动 本地线程分配缓冲(TLAB),将按照线程有限在TLAB上分配。在少数情况下也可能直接分配在老年代中,分配规则并不是百分比固定,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关得参数设置。新生代GC和老年代GC区别新生态代...原创 2020-04-03 19:12:39 · 156 阅读 · 1 评论 -
JVM 垃圾判定&垃圾回收算法介绍
1.垃圾收集算法2.判断对象是否回收标准3.对象是否已死亡原创 2020-03-27 19:37:16 · 168 阅读 · 0 评论 -
JVM 类加载机制之ClassLoader&双亲委派深入解读
jvm类加载器类加载器classloader 双亲委派类初始化过程原创 2020-03-17 10:02:45 · 220 阅读 · 0 评论