- 博客(4)
- 收藏
- 关注
原创 Java锁升级---偏向锁、轻量级锁、自旋锁、重量级锁
一,锁的分类:锁从宏观上分类,分为悲观锁(synchronized)与乐观锁(偏向锁,轻量级锁,自旋锁)。1.乐观锁:认为读多写少,并发写的可能性低。每次读数据都认为别人不会修改,不会加锁,只在更新的时候判断别人有没有更新这个数据。使用CAS实现:在更新之前会保存一个原始值,在写时读取原始值与当前值进行比较如果相同则更新,否则失败。重复进行读—比较—写的操作。CAS存在ABA问题:即一个线程1将A改为B,另一个线程2将B又改回A。判断的时候就不知道有没有人改过。在需要记录修改过程时一般加上版本控
2020-06-30 10:32:23
362
原创 强引用,软引用,弱引用,虚引用
一,强引用Student student = new Student(); // 这就是强引用强引用表示一个对象处在【有用,必须】的状态,是使用最普遍的引用,当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回收具有强引用的“存活”对象来解决内存不足的问题。如果没有其他的引用关系,只要超过了引用的作用域或者显式地将相应(强)引用赋值为 null,就是可以被垃圾收集的了。二,软引用Student st...
2020-06-30 10:26:23
206
原创 JVM与GC垃圾回收(各种垃圾收集器,Jvm相关工具)
1.JVM内存区域:虚拟机栈,本地方法栈,程序计数器线程隔离,方法区,本地内存,直接内存,堆线程共享。①.虚拟机栈:描述方法执行时的内存模型,主要保存执行方法时的局部变量表、操作数栈、动态连接和方法返回地址等信息,方法执行时入栈,方法执行完出栈,出栈就相当于清空了数据,入栈出栈的时机很明确,不需要进行 GC。②.本地方法栈:与虚拟机栈类似,本地方法栈针对于本地方法(该方法并非 Java 实现的,可能由 C 或 Python等其他语言实现的, Java 通过 JNI 来调用本地方法),不需要进
2020-06-30 10:23:50
147
原创 Java类加载机制
Java类加载机制类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。(1) 装载:查找和导入Class文件;(2) 链接:把类的二进制数据合并到JRE中;(a)校验:检查载入Class文件数据的正确性;(b)准备:给类的
2020-06-30 10:07:53
78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人