随笔分类 -  JVM学习

摘要:volatile volatile作用: 可见性 -》lock-> 缓存一致性协议【MESI】 有序性-》防止指令重排 如何实现的? 在JMM内存模型中: 两个线程所占的寄存器中都有一个i值,都是从主存中读到并拷贝到各自的缓存,并最终到达寄存器中。 先看一下不使用volatile会有什么后果: 当核 阅读全文
posted @ 2021-04-12 14:38 Java民工陆小凤 阅读(197) 评论(0) 推荐(0) 编辑
摘要:Java Object getClass() 方法 Object getClass() 方法用于获取对象的运行时对象的类。 ShowGC showGC = new ShowGC(); Class<? extends ShowGC> aClass = showGC.getClass(); 获取到的Cl 阅读全文
posted @ 2021-04-07 09:07 Java民工陆小凤 阅读(57) 评论(0) 推荐(0) 编辑
摘要:在java程序运行的时候,编译器并不一定会根据java程序的顺序去执行,可能会依据优化策略对程序进行重排序,这就是指令重排,主要是提高了程序执行的并行度。 但是在做指令重排的前提下,不能违背程序原本的语义,即本来执行结果为10,不能因为指令重排了,结果变成了8,这就是严重的Bug了。 来看一下jvm 阅读全文
posted @ 2021-03-02 15:00 Java民工陆小凤 阅读(187) 评论(0) 推荐(0) 编辑
摘要:JAVA对象模型: 其中Mark Word: import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.openjdk.jol.info.ClassLayout; import java.sql.Time; import 阅读全文
posted @ 2021-03-02 14:57 Java民工陆小凤 阅读(266) 评论(0) 推荐(0) 编辑
摘要:比较一下JVM字节码: while(true): public class WhileAndFor { public void test(){ while(true){ System.out.println("while..."); } }} 0 getstatic #2 <java/lang/Sy 阅读全文
posted @ 2021-02-25 14:28 Java民工陆小凤 阅读(488) 评论(0) 推荐(0) 编辑
摘要:源码:java.lang.ClassLoader#loadClass protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLo 阅读全文
posted @ 2020-12-31 14:35 Java民工陆小凤 阅读(98) 评论(0) 推荐(0) 编辑
摘要:这里的单例模式实现方法都是线程安全的 一般常见的都是两种单例单例实现方法。加了两种,列举如下 饿汉式 双重检查加锁饿汉式 内部类方式 枚举单例 下面给出JAVA代码实例 /** * 懒汉式 */ public class Singleton1 { private Singleton1(){} pri 阅读全文
posted @ 2020-09-21 21:15 Java民工陆小凤 阅读(271) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示