- 博客(8)
- 收藏
- 关注
原创 深入理解JVM(二):垃圾回收篇
本文参照尚硅谷-宋红康老师的视屏进行整理,仅供大家学习使用,如果侵权,请联系1、垃圾回收简单介绍 (1)什么是垃圾?在运行程序当中没有任何指针指向的对象。 (2)为什么需要GC?如果不进行垃圾回收,内存迟早会消耗完。 (3)JAVA有自动内存管理机制,也就是自动分配内存和回收,降低了内存泄漏和内存溢出的风险。2、垃圾回收相关算法 2.1 标记阶段{标记对象是垃圾的过程} (1) 引用计数法【JAVA中没有使用这个算法】 ...
2020-08-14 21:26:10
250
原创 深入理解JVM(一):类的加载过程、运行时数据区、执行引擎篇
1、下图是JVM加载class文件的整个过程;方法区、堆是所有线程共享的,垃圾回收也只会发生在这两块区域。2、类加载器Class Loader加载过程 Class Loader只负责class文件的加载,文件是否可以执行则有执行引擎来决定2.1 (小)加载过程 (1)通过一个类的全限定名获取定义此类的二进制字节流 (2)将这个字节流所代表的静态存储结构转换为方法区[1.7的实现是老年代,1.8的实现是元空间]时数据结构 (3)内存中生...
2020-08-09 14:15:46
462
原创 不算深入的理解volatile
本文参考哔哩哔哩马士兵老师课程以及网络资源所学,仅供学习使用,如若侵权,请联系1、先从整体上说,volatile的作用 (1)保证内存可见性 volatile修饰的变量,线程之间使用的时候都是需要到主内存中重新获取的 (2)防止指令重排序[CPU的乱序执行] 假设两条指令之间没有关系的,cpu执行的时候可能会颠倒顺序(as if serivl),但是最终结果是一致的【为了提高效率】2、验证一下Java会乱序执行 ...
2020-08-02 10:07:25
166
原创 不算那么深入的理解synchronized
本文参考哔哩哔哩马士兵老师课程以及网络资源所学,仅供学习使用,如若侵权,请联系1、想要了解synchronized底层,首先需要先了解以下基础知识 (1)CAS CAS就是compareAndSwap,比较替换,它一版有四个参数,compareAndSwap(Object var1, long var2, int var4, int var5),简单理解就是比对var4是否等于var2,如果等于,将内存中的var2修改为var5 (2)CAS底层实...
2020-07-31 18:21:07
183
原创 深入理解JDK1.8 ConcurrentHashMap
1、整体结构 JDK1.8的ConcurrentHashMap的内部结构与JDK 1.7有很大区别,1.8可以理解为只是简单的数组+链表+红黑树的结构。【但是如何保证线程安全的呢,下面说】2、主要变量3、put过程4、扩容5、get过程...
2020-07-30 18:42:11
264
原创 深入理解JDK1.8 HashMap
本过程参考网上资料以及哔哩哔哩网站鲁班学院-周瑜老师的讲课内容进行整理,仅供学习使用。感谢各位大佬!如有侵权请联系。1、整体结构 JDK1.8的HashMap相比于1.7,结构多了红黑树,也就是在变成数组+链表+红黑树的结构2、主要变量3、构造方法 与JDK 1.7 一样4、put过程 4.1 如果当前是红黑树,插入过程 4.2 如果节点超过8,链表转红黑树的过程【先将链表转换为TreeNode,其实他是红黑树节点,也是双向链表,然后再...
2020-07-22 19:21:35
181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人