JVM
文章平均质量分 65
java虚拟机
快乐的大多数
一个小白,但我可以学习。
展开
-
Java 深入理解锁
1.锁的定义为了解决多线程对共享资源的使用存在安全问题,从而提出锁的概念。2.所分类这里引用java 锁分类java 中常用的锁关键字关键字 分类 特点 底层实现原理 性能分析 synchronized 悲观锁 独占锁 可重入锁 非公平锁 重量级锁 原子性 可见性(在释放锁之前会将对变量的修改刷新到主存当中) 有序性(独占锁) 可重入性 (线程拥有了锁仍然还可以重复原创 2021-04-05 16:05:54 · 154 阅读 · 0 评论 -
JVM对象创建过程
判断对象对应的类是否加载、链接、初始化检查类是否被加载、解析、初始化 没有则在双亲委派模式下,使用当前类加载器 ClassLoader + 包名 + 类名为key 进项查找.class文件,没有则抛异常 (ClassNotFondException)为对象分配内存计算空间大小 分配地址(指针碰撞----标记压缩算法进行GC)(空闲列表法 ----CMS标记清除算法GC)处理线程安全问题CAS、区域锁 私有TLAB (jdk8 默认开启)初始化分配空间设置默认值设置对象头包含原创 2021-04-03 19:49:50 · 94 阅读 · 0 评论 -
String类
1.String、StringBuilder、StringBuffer 描述 String 不可变性 例如: String a = "张三" String a = new String("张三") string 是一个不可变类,每次 new 都会创建一个新的对象,存储在字符串常量池中 StringBuilder 可变性 线程不安全 扩容 int newCapacity = (value.length << 1)...原创 2021-04-02 19:26:44 · 394 阅读 · 8 评论 -
JVM 原子性、可见性、有序性
类别 定义 描述 原子性 提供了互斥访问,同一时刻只能有一个线程对它进行操作 Java虚拟机对基本数据类的访问、读写都是具备原子性的(除long、double)--注意:i++操作是线程非安全的,即使数据类型的操作是原子性的,但是i++包含三个操作(read-load、assign、store-write)发生指令重排序,导致结果异常。 CAS(compareAndSwap)来实现原子性。(读取传入对象o在内存中偏移量为offset位置的值与期望值原创 2021-04-02 15:28:18 · 165 阅读 · 0 评论 -
JUC 常见的关键字
原子性 atomic 可见性 volatile、synchronized Volatile、synchronized两者的区别联系 1.volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 2.volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。 3.volatile仅能实现.原创 2021-04-01 15:09:37 · 196 阅读 · 0 评论