- 博客(7)
- 收藏
- 关注
原创 深入理解JVM-GC
1.GC简介GC(Garbage Collection):即垃圾回收器,诞生于1960年MIT的Lisp语言,主要是用来回收,释放垃圾占用的空间。java GC泛指java的垃圾回收机制,该机制是java与C/C++的主要区别之一,我们在日常写java代码的时候,一般都不需要编写内存回收或者垃圾清理的代码,也不需要像C/C++那样做类似delete/free的操作。1.1.为什么需要学习GC对象的内存分配在java虚拟机的自动内存分配机制下,一般不容易出现内存泄漏问题。但是写代码难免会
2020-05-20 20:34:20 692
原创 深入理解JVM-内存模型(JMM)
1 CPU和内存的交互了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存,用于缓解这种情况。现在cpu和内存的交互大致如下。cpu、缓存、内存cpu上加入了高速缓存这样做解决了处理器和内存的矛盾(一快一慢),但是引来的新的问题 - 缓存
2020-05-20 20:19:49 282
原创 HashMap原理及源码解读
HashMap原理HashMap内部是基于哈希表实现的键值对存储,继承 AbstractMap 并且实现了 Map 接口。 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的e...
2020-05-01 11:30:31 207
原创 HashMap的工作原理简单
HashMap 的存储机制 在 Java 1.8 中,如果链表的长度超过了 8,那么链表将转化为红黑树;链表长度低于6,就把红黑树转回链表; Java 1.8 中 HashMap 的不同 在 Java 1.8 中,如果链表的长度超过了 8,那么链表将转化为红黑树;链表长度低于6,就把红黑树转回链表; 发生 hash 碰撞时,Java 1.7 会在链表头部插入,而 Java 1.8...
2020-05-01 11:24:13 181
原创 HashMap和HashTable的区别
HashMap采用了数组+链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改HashMap是非synchronized,所以HashMap比HashTable更快HashMap可以接受null键和值,而Hashtable则不能(原因就是equlas()方法需要对象,因为HashMap是后出的API经过处理才可以)...
2020-05-01 11:22:23 95
原创 ArrayList扩容机制
ArrayList每次扩容是原来的1.5倍。 数组进行扩容时,会将老数组中的元素重新拷贝一份到新的数组中,每次数组容量的增长大约是其原容量的1.5倍。 代价是很高的,因此在实际使用时,我们应该尽量避免数组容量的扩张。尽可能,就指定其容量,以避免数组扩容的发生。 创建方式方式不同,容量不同 初始化方式 容量 数量变化 List arrayList = new Array...
2020-05-01 11:00:55 378
原创 ArrayList和LinkedList区别?
都是List接口的实现类ArrayList基于数组,LinkedList基于链表ArrayList查询快,增删慢往数组尾部添加元素的效率高,也就是调用add(obj),但是还是比LinkedList慢。LinkedList数据添加删除效率高,只需要改变指针指向即可查询数据的平均效率低,需要对链表进行遍历...
2020-05-01 10:32:40 125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人