- 博客(11)
- 收藏
- 关注
jvm内存结构和垃圾回收
引言 java对象的实例都存放在堆里,有的对象会频繁的创建和消亡,生命周期短,而另外一些对象则相当长寿。jvm按照寿命的长短将对象存放于不同的堆区里并采用不同的垃圾回收策略,最大限度的保证内存的需求和降低gc的消耗。 堆的分区 堆分为三个代,分别是青年代(Young)、老年代(Old)和永久代(Perm)。 青年代(Young) 顾名思义,...
2011-08-09 13:31:00 73
ArrayList
ArrayList定义 顾名思义,ArrayList是对List的一种数组实现,部分代码如下: ...... private transient Object[] elementData; ...... elementData即为ArrayList的底层数据存储。 ArrayList的扩容 ArrayList的默认容量是10,如下: public ArrayList...
2011-08-08 17:55:49 193
LinkedList
LinkedList定义 LinkedList是对List的一种链表实现,定义如下: ...... private transient Entry<E> header = new Entry<E>(null, null, null); ...... header是一个非常普通双向链表,以下是双向链表节点的部分属性: E element; Entry<...
2011-08-08 17:47:08 95
HashSet与LinkedHashSet
HashSet定义 HashSet是在HashMap基础上实现的元素不重复的集合容器,定义如下: ...... private transient HashMap<E,Object> map; ...... 其底层数据结构就是HashMap,数据以KEY的形式保存与map中。HashSet有如下三个构造函数: public HashSet(int initialCapa...
2011-08-08 17:19:54 96
java线程同步
多线程同步方式 线程之间的同步需要用到“锁”来保护代码,以保证对于共享数据进行有序化读写。java中锁又分为独占锁和读写锁。独占锁是一种公平锁,任何时刻,最多只有一个线程(读或写)进入被保护的代码块;读写锁是一种非公平锁,包含了读锁和写锁,允许共享读,但读写互斥、写写互斥。在读多写少的场合使用读写锁比使用独占锁效率要高得多。 java多线程同步方式有四种:join,synchroni...
2011-08-08 15:46:53 68
java线程
多线程的目的 多线程有两个目的: 1、充分利用cpu资源 2、产生非阻塞 线程与进程的关系 进程是资源的分配单位,线程是CPU的调度单位。JVM启动后,一个JVM进程就启动了,该进程拥有自己的地址空间,并且该地址空间对进程内的所有线程都可见,线程按照时间片的方式竞争式分享CPU。 java线程的创建 1、继承Thread 2、实现Runnable 这两种...
2011-08-08 13:47:13 66
java Reference
java引用分类 java引用分为4类,强引用、软引用、弱引用和虚引用。这四种引用跟gc的行为密切相关,gc在垃圾回收时根据引用的类型会有所不同。 强引用 强引用我们用的最多,随便new一个实例,然后用一个引用指向该实例,这个引用就是强引用了。对于强引用指向的对象,在垃圾回收时绝不会回收,即使内存不足抛出OutOfMemoryError。 软引用 SoftRefere...
2011-08-08 12:58:07 75
TreeMap
TreeMap定义 与LinkedHashMap不同,TreeMap不是继承于HashMap,而是继承于AbstractMap,归根到底,TreeMap实现的不是hash算法,而是二叉树算法;底层的数据存储也不是数组,而是链表实现的二叉树。二叉树数据结构决定了该map是一个按key进行排序排序的map。定义如下: ...... private final Comparator<? ...
2011-08-08 11:46:46 60
LinkedHashMap
LinkedHashMap定义 LinkedHashMap继承于HashMap,本身就是一个HashMap,只是增加了一个双向链表按顺序保存KEY。 ...... private transient Entry<K,V> header; private final boolean accessOrder; ...... 属性acce...
2011-08-08 10:41:51 59
HLS流协议
在youku和pplive上看视频时,用户可以可以选择“标清”、“高清”或“超清”,原理比较好理解,对于同一个片子,在视频库存储着标清、高清和超清3个码率的版本,3个版本均按照时长切割成相同数量的数据片,用户选择高清时,播放器就加载对应时长上的高清片,选择超清时就加载对应时长上的超清片。这样一来用户就可以根据自己当前的网络状况和视频流畅性选择合适的视频播放模式。但即便是这样,MP4协议还是有他的美...
2011-08-05 19:43:55 130
HashMap
HashMap的数据结构 HashMap的底层数据结构为数组+链表,数组的元素类型为Entry,Entry本身是一个链表结构。在HashMap中可以看到如下的实例变量: transient Entry[] table; 该变量即定义了HashMap的数据存储。 HashMap的数据容量 HashMap有一个经常...
2011-08-03 11:51:41 51
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人