摘要: 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强 阅读全文
posted @ 2018-11-07 17:04 青春暮年 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 垃圾收集主要是针对堆和方法区进行。 程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。 判断一个对象是否可被回收 1. 引用计数算法 给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数 阅读全文
posted @ 2018-11-07 15:27 青春暮年 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 程序计数器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 可以通过 阅读全文
posted @ 2018-11-07 14:41 青春暮年 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 存储结构 继承自 HashMap,因此具有和 HashMap 一样的快速查找特性。 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> 内部维护了一个双向链表,用来维护插入顺序或者 LRU 顺序。 /** 阅读全文
posted @ 2018-11-07 11:18 青春暮年 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 为了便于理解,以下源码分析以 JDK 1.7 为主。 1. 存储结构 内部包含了一个 Entry 类型的数组 table。 transient Entry[] table; Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一 阅读全文
posted @ 2018-11-07 10:38 青春暮年 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 1. 概览 实现了 RandomAccess 接口,因此支持随机访问。这是理所当然的,因为 ArrayList 是基于数组实现的。 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, 阅读全文
posted @ 2018-11-07 10:30 青春暮年 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 Collection 1. Set TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,Hash 阅读全文
posted @ 2018-11-07 10:23 青春暮年 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 转自:https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html 什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或 阅读全文
posted @ 2018-11-07 09:33 青春暮年 阅读(182) 评论(0) 推荐(0) 编辑