GC对象与类的加载机制
来源:互联网 发布:百度源码 编辑:程序博客网 时间:2024/05/17 14:19
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对象,作为方法区这个类的各种数据的访问入口。
- GC对象与类的加载机制
- JVM的GC算法/类加载机制
- JVM-类加载、GC回收机制
- .NET的GC内存管理与GC回收机制
- JVM的GC机制、收集器与GC调优
- C#的GC机制,委托机制与Unity内存泄露
- java的GC机制--java对象的访问方
- 对象重用与GC
- GC机制、收集器与GC调优
- “反射机制”与“类加载机制” 的 举例
- Java的GC机制
- .NET的GC机制
- Java的GC机制
- Java的GC机制
- Java的GC机制
- php的gc机制
- Java的GC机制
- Java的GC机制
- 分享一个时间插件Foundation-datepicker.js
- 【Scikit-Learn 中文文档】聚类
- flex布局
- HDU 1116 Play on Words
- 自定义注解,jdk注解,jdk1.8新增注解。
- GC对象与类的加载机制
- TouchEvent事件传递机制
- Oracle导入dmp文件报错IMP-00010: 不是有效的导出文件, 头部验证失败
- Linux下Tomcat重新启动
- php1
- 【Scikit-Learn 中文文档】双聚类
- mysql学习 stage1-4
- 文章标题
- 软件架构模式