java
雨落千木
我是一个爱好编程的菜鸟!
展开
-
CurrentHashMap原理
ConcurrentHashMap内部数据结构是hashTable,但是与hashTable不同的是CurrentHashMap使用了锁分离技术,即:使用多个不同的锁来控制对HashTable的不同部分进行修改,其内部的不同部分使用Segment来表示。这样一个大的HashTable就会被分为多个小的HahTable,每个锁作用在不同的小HashTable上。当多个操作发生在不同的Segment...原创 2015-12-17 16:22:37 · 1105 阅读 · 0 评论 -
在java中使用协程
1. 背景知识 现在的操作系统都是支持多任务的,多任务可通过多进程或多线程的方式去实现,进程和线程的对比就不在这里说了,在多任务的调度上操作系统采取抢占式和协作式两种方式,抢占式是指操作系统给每个任务一定的执行时间片,在到达这个时间片后如任务仍然未释放对CPU的占用,那么操作系统将强制释放,这是目前多数操作系统采取的方式;协作式是指操作系统按照任务的顺序来分配CPU,每个任务执行过程中...原创 2016-02-01 15:18:00 · 456 阅读 · 0 评论 -
标记java对象是否存活
在java垃圾收集器对堆内存进行回收之前,需要判断哪些对象还存活着,哪些对象已经死去。 一、引用计数算法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,任何时刻计数器值都为0的对象就是不可能再被使用的对象,该对象会被GC收集。 缺点:java中没有使用引用计数算法,原因是对象之间的循环引用很难解决。 二、根搜...原创 2017-01-22 11:15:14 · 208 阅读 · 0 评论 -
java对象的引用
java 1.2后,java对引用的概念进行了扩充,分为:强引用、软引用、弱引用、虚引用。 强引用:就是在程序代码之中普遍存在的,类似Object obj = new Object();只要强引用还在,垃圾收集器永远不会回收掉被引用的对象。 软引用:用来描述一些还有用,但是并非必须的对象。对于软引用关联着的对象,在系统 将要 发生内存溢出异常之前,将会把这些对象列进回收范围之...原创 2017-01-22 17:59:56 · 186 阅读 · 0 评论