
JDK解读
专属_Smile
云想衣裳花想容 ^*^
展开
-
浅析java8中HashMap的结构
HashMap中涉及的部分数据结构数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表之拉链法哈希表(Hash table,也叫散列表),是根据关键码值原创 2017-12-20 14:58:59 · 973 阅读 · 0 评论 -
如何使用线程安全的HashMap
HashMap为什么线程不安全导致HashMap线程不安全的原因可能有两种:1、当多个线程同时使用put方法添加元素的时候,正巧存在两个put的key发生了碰撞(根据hash值计算的bucket一样),那么根据HashMap的存储原理,这两个key会添加多数组的同一个位置,这样一定会导致其中一个线程put的数据被覆盖丢失2、当多个线程同时检测到元素个数超过哈希表的size*loadFl原创 2017-12-20 16:53:01 · 3927 阅读 · 2 评论 -
StackOverflowError和OutOfMemoryError
对于堆内存溢出和栈内存溢出,在深入理解JVM虚拟机这本书中有相关的定义:在java虚拟机规范中,对于局部变量空间(这里的局部变量空间指的是java虚拟机中的“栈”或者说java虚拟机栈中局部变量表部分)规定了两种异常状态:如果线程请求的栈深度(栈深度指的是程序递归调用的次数)大于虚拟机所允许的深度,将抛出StackOverflowError;如果虚拟机栈可以动态扩展(当前大部分的java虚拟机都可...原创 2018-03-15 14:05:19 · 300 阅读 · 0 评论