GC对象与类的加载机制
2017-11-29 16:35
120 查看
1,可以作为GC roots的对象包含以下几种:
1:虚拟机栈(栈帧中的本地变量表)中引用 的对象。
2:方法区中类静态属性引用的对象。
3:方法区中常量引用的对象。
4:本地方法栈中引用的对象。
2,可以被回收的类需满足的条件
1:该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。
2:加载该类的ClassLoader已经被回收。
3:该类对应的Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
3,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终形成可以被虚拟机直接使用的java类型。这就是虚拟机的类加载机制。
类从被加载到虚拟机内存中开始,到卸载出内存位置,整个生命周期:
加载、验证、准备、解析、初始化、使用、卸载。
其中 验证、准备、解析3个周期较长
4,类的初始化时机
1:遇到new、getstatic、putstatic、invoestaic这4条字节码指令时,如果类没有初始化,则先触发初始化。
生成这四条指令最常见的场景是:使用new关键字实例化对象的时候,读取或者设置一个类的静态字段时,以及调用一个类的静态方法的时候。
2:使用反射包的方法对类进行反射调用的时候,如果类没有初始化,则先触发其初始化。
3:当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。
4:当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类。
5,类加载过程虚拟机完成的事情
1:通过一个类的全限定名来获取定义此类的二进制字节流。
2:将这个字节流所代表的静态存储结构转化为方法区运行时的数据结构。
3:在内存中生成一个代表这个类的Class对象,作为方法区这个类的各种数据的访问入口。
1:虚拟机栈(栈帧中的本地变量表)中引用 的对象。
2:方法区中类静态属性引用的对象。
3:方法区中常量引用的对象。
4:本地方法栈中引用的对象。
2,可以被回收的类需满足的条件
1:该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。
2:加载该类的ClassLoader已经被回收。
3:该类对应的Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
3,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终形成可以被虚拟机直接使用的java类型。这就是虚拟机的类加载机制。
类从被加载到虚拟机内存中开始,到卸载出内存位置,整个生命周期:
加载、验证、准备、解析、初始化、使用、卸载。
其中 验证、准备、解析3个周期较长
4,类的初始化时机
1:遇到new、getstatic、putstatic、invoestaic这4条字节码指令时,如果类没有初始化,则先触发初始化。
生成这四条指令最常见的场景是:使用new关键字实例化对象的时候,读取或者设置一个类的静态字段时,以及调用一个类的静态方法的时候。
2:使用反射包的方法对类进行反射调用的时候,如果类没有初始化,则先触发其初始化。
3:当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。
4:当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类。
5,类加载过程虚拟机完成的事情
1:通过一个类的全限定名来获取定义此类的二进制字节流。
2:将这个字节流所代表的静态存储结构转化为方法区运行时的数据结构。
3:在内存中生成一个代表这个类的Class对象,作为方法区这个类的各种数据的访问入口。
相关文章推荐
- 对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制
- 【Java面试整理之JVM】深入理解JVM结构、类加载机制、垃圾回收GC原理、JVM内存分配策略、JVM内存泄露和溢出
- 类加载器及反射机制(二)-根据对象属性读取属性值
- Java类加载机制 .class文件加载 .class文件实例化对象 Spring自动包扫描Bean原理
- 类加载机制与反射4——使用反射生成并操作对象
- java class加载机制及对象生成机制
- 从对象生命周期梳理JVM内存结构、GC、类加载、AOP编程及性能监控
- PHP面向对象自动加载机制原理与用法分析
- java类、对象加载机制题目汇总
- JVM(3)对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制
- [Java]利用反射机制动态加载并创建包含参数的对象
- java的GC机制--java对象的访问方
- JVM类加载机制与对象的生命周期
- 关于Class对象、类加载机制、虚拟机运行时的内存布局的全面解析和推测
- PHP面向对象自动加载机制原理与用法分析
- unreal3对象属性自动从配置文件中加载的机制
- 【JVM类加载机制】从一个对象的验证问题说开去
- 对象延迟加载机制
- JVM-类加载、GC回收机制
- The NOTE of learning ASP.NET [19] 关于GC(内存回收机制)、对象的销毁和using的使用