jdk源码学习
Liyin233
这个作者很懒,什么都没留下…
展开
-
jvm学习——jvm内存区域
前言jvm是java为了实现一次编译多处运行的秘籍,在jvm里面抽象出来了一个虚拟的机器,jvm为自己设计了一套内存模型——堆、栈、本地方法栈、方法区、程序计数器一、堆Java堆是虚拟机中生产和管理对象的一块儿内存。几乎所有的对象会在堆内存上进行创建,同时堆内存也会对这些内存进行管理,对于大部分的对象都是朝生夕灭。堆内存中需要一些算法来清理这些内存。其中较为人知的包括对象标记算法——可达性分析。为了更好地回收内存,堆内存的分带管理,对于堆内存分为edan, from suviver, to suv原创 2020-12-06 21:14:58 · 219 阅读 · 0 评论 -
jdk学习——ConcurrentHashMap
在HashMap的基础上,继续学习ConcurrentHashMap,其利用到基本原理是,将哈希表中的锁竞争分段到每一个节点。而并不是将整个哈希表锁住。**在JDK8之前,ConcurrentHashMap 的实现是让每一个节点持有一个锁**,然后当访问对应节点的时候,则使用这个锁只锁住一个节点而不是整个哈希表。这个理念与Innodb希望用行锁取代表锁提高并发量很类似。```java static class Segment<K,V> extends ReentrantLock implements原创 2020-12-06 14:03:42 · 272 阅读 · 1 评论 -
jdk学习——HshMap
1. 基本数据结构HashMap的底层数据结构是一个Hsah表,哈希表允许Java通过一个Hash函数将一个对象映射到一个数组的索引上,从而达到近似O(1)的访问和插入效率。那么Hash表的底层就是一个数组和一个哈希函数。...原创 2020-12-05 00:48:22 · 242 阅读 · 0 评论 -
jdk学习——ThreadLocal
重点:① 在ThreadLocal中存储的变量每个线程独有② ThreadLocal中数据结构存储形式是,在每个线程中放置了一个Map存储当前线程所有的静态变量,而不是在ThreadLocal中放置了一个Map来存储所有线程的私有变量,这样有利于在线程回收之后回收ThreadLocal③ ThreadLocalMap中解决Hash冲突的方式是逐位向后探测空位④ 在进行操作的时候,ThreadLocal会顺便清理失效的弱引用⑤ 在清理失效节点的时候,会尝试调整哈希值到正确的索引槽位,但是不一定会成功原创 2020-11-28 20:00:38 · 118 阅读 · 0 评论