目录
Too_1
jdk1.7,属于JVM堆内存中的区域?
jvm堆分为:
新生代(一般是一个Eden区,两个Survivor区)
老年代(old区)
常量池属于 PermGen(方法区)
Top_2
ArrayLists和LinkedList的区别,下述说法正确的有?
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。对于随机访问get和set,ArrayList绝对优于LinkedList,因为LinkedList要迭代器。对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
答案:全对
补充第一句最后一句解释:
- 这里的所谓动态数组并不是有多少元素就申请多少空间的意思,通过查看源码,
可以发现,这个动态数组是这样实现的,如果没指定数组大小,则申请默认大小为10的数组,当元素个数增加,数组无法存储时,系统会另个申请一个长度为当前长度1.5倍的数组,然后,把之前的数据拷贝到新建的数组
- ..........................................
- ArrayList空间的增长率为1.5倍,所以,最后很可能留下一部分空间是没有用到的,因此,会造成浪费的情况。对于LInkedList的话,由于每个节点都需要额外的指针
Top_3
浅谈ThreadLocal类
ThreadLocal是采用哈希表的方式来为每个线程都提供一个变量的副本 ThreadLocal保证各个线程间数据安全,每个线程的数据不会被另外线程访问和破坏ThreadLocal的类声明:
public class ThreadLocal<T>
可以看出ThreadLocal并没有继承自Thread,也没有实现Runnable接口
Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。