摘要:
内存泄漏为程序在申请内存后,无法释放已申请的内存空间,一次泄露危害可以忽略,但内存泄漏堆积后果很严重,无论多少内存,迟早会被占光。 不再会被使用的对象或者变量占用的内存空间不能被回收,就是内存泄漏。 强引用:使用最普遍的一个引用(new),一个对象具有强引用,不会被垃圾收集器回收。当内存空间不足,j 阅读全文
摘要:
每一个Thread对象均含有一个ThreadLocalMap类型的成员变量threadLocals,它存储本线程中所有ThreadLocal对象及其对应的值 ThreadLocalMap是由一个个Entry对象构成,Entry继承自WeakReference,一个Entry是由ThreadLocal 阅读全文
摘要:
锁池 所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池进行等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等到CPU资源分配。 等待池 当我们调用wait()方法后,线程会放到等待池当中,等待池的线程 阅读全文
摘要:
引用计数法:每个对象有一个引用计数属性,新增一个引用时计数器+1,引用释放时计算器 -1,计数为0时可以回收。 可达性分析:从GC Roots开始向下收索,搜索走过的路径成为引用链。当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,那么虚拟机就判断是可回收对象。 引用计数法, 阅读全文
摘要:
java类加载器 jdk自带有三个类加载器:BootstrapClassLoader、ExtClassLoader、APPClassLoader。 BootStrapClassLoader时ExtClassLoader的父类加载器 (这里所说的父类加载器时组合关系,并不是继承关系) 默认负责加载%J 阅读全文
摘要:
jdk7 数据结构:ReentrantLock + Segment + HashEntry,一个Segment中包含一个HashEntry数组,每个HashEntry又是一个链表结构 元素查询:二次hash,第一次hash定位到Segment,第二次hash定位到segment中元素所在的链表头部 阅读全文