美文网首页
2017.12.21三题

2017.12.21三题

作者: 吴国友 | 来源:发表于2017-12-21 22:30 被阅读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)

    相关文章

      网友评论

          本文标题:2017.12.21三题

          本文链接:https://www.haomeiwen.com/subject/xjdzwxtx.html