2018-07-09

2018-07-09  本文已影响0人  tianshuguang

1、JVM的工作原理

JVM的内部体系结构分为三部分,

2、Java 的内存管理

Java GC机制主要完成3件事:确定哪些内存需要回收,确定什么时候需要执行GC,如何执行GC。
Java内存分配和回收的机制概括的说,就是:分代分配,分代回收。对象将根据存活的时间被分为:年轻代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,也就是方法区)

(1)类的所有实例都已经被回收
(2)加载类的ClassLoader已经被回收
(3)类对象的Class对象没有被引用(即没有通过反射引用该类的地方)

3、Dalvik和ART虚拟机的区别

1、平台支持差别:

Dalvik Android 4.4 及其以下平台使用的虚拟机;
ART Android4.4以上平台使用的虚拟机技术;

2、工作原理差别:

在应用程序启动时,JIT(just-in-time,即时编译技术)通过进行连续的性能分析来优化程序代码的执行,在程序运行的过程中,Dalvik虚拟机在不断的进行将字节码编译成机器码的工作。
ART引入了AOT(Ahead-Of-Time)这种预编译技术,在应用程序安装的过程中,ART就已经将所有的字节码重新编译成了机器码。应用程序运行过程中无需进行实时的编译工作,只需要进行直接调用.因此,ART极大的提高了应用程序的运行效率,同时也减少了手机的电量消耗,提高了移动设备的续航能力,在垃圾回收等机制上也有了较大的提升。
相对于Dalvik虚拟机模式,ART模式下Android应用程序的安装需要消耗更多的时间,同时也会占用更大的储存空间(指内部储存,用于储存编译后的代码),但节省了很多Dalvik虚拟机用于实时编译的时间

4、多线程和安全问题

多线程编程中的三个核心概念

activity启动过程

java泛型
java反射
activity事件分发
volley原理
进程间传输方式
热修复相关的问题

一个listview很卡顿,让分析一下其中可能的原因和你碰见这个问题如何动手解决。

怎么停止一个线程,waitxxx有用吗?

静态内部类引用外部类怎么解决引用问题

for循环…的线程同步问题

Java虚拟机什么时候进行GC,Android虚拟机呢?

弱引用和软引用的区别?各自的使用场景是什么

RxJava和EventBus的区别?好奇怪

一个类中声明private static Bitmap会引起什么问题,主要考察的是内存泄露

ScrollView和Listview的区别?

listview加载图片会有什么问题,如果引起图片错位是什么原因导致的?怎么解决?

多线程和安全问题

事件冲突
一些常用的 list,map 原理,以及子类之间的差别

bitmap局部加载

IntentService、HandlerThread

上一篇 下一篇

猜你喜欢

热点阅读