一、Class的文件的详解 1.什么是class文件 能够被JVM虚拟机识别的文件 2.如何生成一个class文件 a. 通过IDE自动帮我们生成 b.手动通过javac去生成class文件,通过java命令去执行class文件 3.class文件的弊端 a.内存占用大,不适合移动端 b.堆栈的加栈模式,加载速度慢 c.文件IO操作多,类查找慢 二、Dex文件的详解 1.什么是dex文件 能够被DVM识别,并且加载执行的文件格式 2.生成dex文件 a.通过IDE自动生成文件 b.手动通过dx命令生成dex文件,并且手动去执行dex文件在手机上 3. dex文件会去除多余冗余的文件 三、java内存管理 1.Java栈区 : 它是存放Java方法执行时所有的数据 2.本地方法栈 : 是专门为native方法服务 3.方法区 : 存储被虚拟机加载类的信息、常量、静态变量、编译器编译后等数据 4.堆区 : 所有通过new创建的对象的内存都分配到堆中,它也是虚拟机最大的一块内存,时 GC要回收的部分 四、JVM的讲解
原理讲解:从GC Root节点开始,寻找对用所有的引用的节点,没有引用不可达的节点,说明没有被引用,就被认为是垃圾对象 1.引用类型为强引用、软引用、弱引用、虚引用 2.弱引用的创建 Object obj = new Object(); WeakReference<Object> wf = new WeakReference<Object> (obj); obj = null; wf.get(); ----->必须判断是否为空 3.垃圾回收算法 a.标记-清除算法 : 快速的把对象回收,但是会产生很多内存碎片
b.复制算法 : 开辟一个新的空间并复制要保留的对象,然后清除原有的,保留剩余的。但这样就需要开辟一块新的内存
3.标记-整理算法:在标记-清除算法上做了优化,把标记垃圾的对象再遍历整个空间时,会把所有存活的对象往左端移动,不存活对象往右移,并更新对应的指针。 来源:https://www./content-4-429251.html |
|