在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行。那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。不失一般性,如果一个对象没有任何引用与之关联,则说明该对象基本不太可能在其他地方被使用到,那么这个对象就成为可被回收的对象了。这种方式成为引用计数法。
常用垃圾收集器 1) 标记-清除收集器 Mark-Sweep 2) 复制收集器 Copying 3) 标记-压缩收集器 Mark-Compact 4) 分代收集器 Generational (现在常用的年轻代,老年代....)
ArrayList、Vector是线性表 ArrayList是非同步的,Vector是同步的。不用考虑多线程时应使用ArrayList来提升效率。
LinkedList是链表,略懂数据结构就知道其实现原理了。链表随机位置插入、删除数据时比线性表快,遍历比线性表慢。
Map(存储键值对,key唯一)HashMap结构的实现原理是将put进来的key-value封装成一个Entry对象存储到一个Entry数组中,位置(数组下标)由key的哈希值与数组长度计算而来。 Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。