JVM
文章平均质量分 96
ぃ小男孩つ
这个作者很懒,什么都没留下…
展开
-
【JVM学习04】JMM内存模型
情况2线程2先执行num=2,但没来得及执行ready=true,线程1执行,还是进入else分支,结果为1-情况3线程2执行到ready=true,线程1执行,这回进入if分支,结果为4(因为num已经执行过了)happens-before规定了哪些写操作对其它线程的读操作可见,它是可见性与有序性的一套规则总结,抛开以下happens-before规则,JMM并不能保证一个线程对共享变量的写,对于其它线程对该共享变量的读可见。...原创 2022-07-21 23:42:03 · 174 阅读 · 0 评论 -
【JVM学习03】类加载与字节码技术
类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个Java虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等!类加载时,类的字节码载入方法区。...原创 2022-07-20 20:41:11 · 524 阅读 · 0 评论 -
【JVM学习02】JVM的垃圾回收
等到并发标记结束,进行重新标记,会STW,暂停其他线程,然后将线程里的对象取出来检查,发现对象是灰色,还需要进行处理。达到下一个安全点后,进行重新标记,因为上一个并发标记时,其他用户线程也在并发执行,所有可能会产生新对象新引用,对垃圾回收线程造成了干扰,需要重新标记。新生代的回收之后,可以在进行新生代回收时,同时并发标记,然后再进行混合垃圾回收,即对新生代、老年代都进行一次较大的垃圾回收。缺陷清除的空间比较零碎,当待分配的新对象过大,即使零碎空间加起来总共是够的,但是由于过于零散,所以无法对其进行分配。..原创 2022-07-19 00:04:22 · 931 阅读 · 2 评论 -
【JVM学习01】JVM的内存管理
1)定义JavaVirtualMachine,Java程序的运行环境(Java二进制字节码的运行环境)。2)好处一次编译,处处执行-自动的内存管理,垃圾回收机制-数组下标越界检查3)比较JVM、JRE、JDK的关系如下图所示ProgramCounterRegister程序计数器(寄存器)JavaVirtualMachineStacks(Java虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存。............原创 2022-07-15 20:29:22 · 1088 阅读 · 0 评论