美文网首页
Android知识点

Android知识点

作者: 旭仔_2e16 | 来源:发表于2021-07-01 11:08 被阅读0次

    1.混淆做了哪些事情?

    • 压缩:从应用及依赖库中删除没有使用的类、方法、字段,有助于规避64位方法数的限制
    • 优化:通过代码分析移除没有使用的代码,甚至重写代码
    • 混淆:使用没有意义的简短名称,重命名类、方法、字段,增加逆向难度。
    • 预校验:对于面向java6和java7 jvm的class文件,编译时可以把预校验信息添加到类文件中,从而加快运行时类加载效率,但是对于Android平台无效。

    2.double check的单例为什么要用volatile修饰?
    答:对象的创建可简化为以下三个步骤:

    • jvm分配内存空间
    • 对象初始化
    • 引用指向内存地址
      主要是为了类加载时虚拟机对对象创建步骤进行重排,先执行了第三步,然后再执行第二步。多线程时,一个线程先执行引用指向内存地址,这个时候另一个线程中获取到的引用因为已经指向了内存地址,所以不为空,但是对象并没有初始化完成,所以使用时会出现异常。使用volatile可以防止对象创建执行顺序的重排,避免出现异常。

    相关文章

      网友评论

          本文标题:Android知识点

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