2017.12.21三题

2017-12-21  本文已影响3人  吴国友
1.介绍垃圾回收机制

1.标记回收法:遍历对象图并且记录可达的对象,以便删除不可到达的对象,一般使用单线程工作并且可能产生内存碎片。
2.标记-压缩回收发:前期与第一种方法相同,只是多了一步,将所有的存活对象压缩到内存一段,这样内存碎片就可以合成一大块可再利用的内存区域,提高了内存利用率
3.复制回收法:把现有内存空间分成两部分,gc运行时,它可到达对象复制到另一半空间,再清空正在使用的控件的全部对象。这种方法是用于短生存期的对象,持续复制长生存期的对象则导致效率降低。
4.分代回收法:把内存分为两个或者多个域,如年轻代和老年代,年轻代的特点是对象会很快被回收,因此在年轻代使用效率比较高的算法,当一个对象经过几次回收后依然存活,对象就会被放入称为老年的内存空间,老年代则采取标记-压缩算法

2.ArrayList、LinkedList、Vector的区别

1.ArrayList和Vector底层是采用数组方式存储数据,Vector由于使用了 synchronized方法(线程安全)所以性能上比ArrayList要差。
2.Linkedlist使用双向链表实现存储,随机存取比较慢。
3.HashMap的底层源码实现:当我们往hashmap中put元素的时候,先根据key的hashCode重新计算hash值,根据hash值得到这个元素在数组中的位置(即下标),如果数组该位置上已经放有其他元素了,那么在这个位置上的原生将以链表的形式存,新加入的放在链头,最先加入的放在链尾。如果数组该位置上没有元素,就直接将该元素放到此数组中的该位置上。

3.android线程间通信有哪几种方式?

1.共享变量(内存)
2.管道
3.handler机制:runOnUiThread(Runnable)
view.post(Runnable)

上一篇下一篇

猜你喜欢

热点阅读