- 博客(5)
- 收藏
- 关注
原创 内部类初始化
单例模式中常用的一种饿汉模式实现是用内部类实现的,但是并不理解为什么是饿汉,不是懒汉呢,于是写了下面的测试程序,得到结果:并不是InnerClass外部类初始化,其内部类JobSchedulerHolder就初始化。public class InnerClass{ private static class JobSchedulerHolder{ private static Inne
2017-04-27 16:42:38 748
原创 GC发生时内存分配和回收策略
在《深入理解java虚拟机》一书中读到3.6章节,内存分配和回收策略: 预备知识 java堆=年轻代(Eden+Survivor+Survivor)+老年代 Eden:Survivor:Survivor默认比例8:1:1,每次年轻代使用率90%(Eden和一个Survivor)。 一 内存分配策略 1 对象优先在eden分配 可用空间是Eden和一个Survivor,在GC回收发生时,如
2017-04-25 16:56:42 328
原创 LinkedList源码阅读
同样LinkedList的底层也是基于一种数据结构的,这个结构是双向循环链表,在简书上看到一篇文章分析很详细,基于jdk1.6,链接如下: LinkedList源码解析 但是在jdk1.7中,LinkedList是一种双向链表,非循环,但是增加了指向了最后一个节点和指向第一个节点的指针。 1 LinkedList成员变量和构造函数public class LinkedList<E> e
2017-04-21 10:49:28 231
原创 HashMap源码阅读
1 HashMap设计思想 我们在使用HashMap时,都知道这是key-value的存储形式,那么怎么做到key不重样,又能根据key很快的找到对应的value值呢,怎么才能做到很快的插入一个元素呢?这些需求驱动了HashMap的设计,HashMap的源码实际上是实现了哈希表这种数据结构,我们在数据结构课中学过,数组和链表是两种基本的数据结构,数组的特点是空间连续(大小固定)、寻址迅速,但是插入
2017-04-20 11:16:46 246
原创 String源码阅读
1 为什么String是不可变对象,而StringBuffer是可变对象,而StringBuffer的初始长度是多少? 可以由源码得到 String的char数组是final类型,所以一旦初始化就不可变,StringBuffer的初始长度是16 public final class String{ private final char value[]; /** Cache the hash
2017-04-19 14:42:06 315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人