jvm---1
1. java的虚拟机概览

2. java虚拟机.class文件, 不但要根据后缀名判断,还根据.class文件中的内容进行判断,一般前8个字节为:cafe babe.
3.类装载器

4. 启动类加载器(C++)编写, 扩展类加载器, 应用类加载器
Object.class.getClassLoader() 返回的结果为null,如果是jdk自带的,那么返回的就为null, 如果是自己自定义的类,那么就是 AppClassLoader的类加载器。在jre/lib中,找到rt.jar中,可以找到所有的jdk相 关的类,.class文件,
扩展类加载器,加载的是javax包相关的内容,在 jre/lib/ext下的 jar 文件
应用类加载器:加载自定义类
5. jvm采用夫类加载机制,线程私有,不回收即: 当声明类的时候,先在最高层找,启动类中找,再去扩展类中找,最后在应用加载类找,即自定义的,没有就报异常: NoSuchClassException,防止自定义类 污染jdk的类
6. 本地方法栈: 线程私有,不回收,本地方法栈存放native修饰的方法和属性。native 修饰的方法交给第三方函数库,不再依赖java语言。
7. 程序计数器: 线程私有,垃圾不回收【Program Counter Register】 记录程序运行的位置,下一句该执行什么, 存储指向下一条指令的地址
8. 方法区:共享区域, 垃圾会回收,存储类文件的结构信息,即:模板,存放:常量池,字段,方法,构造函数,普通方法的字节码内容
9. java栈: 线程私有,不存在垃圾回收,跟随线程,线程消失,java栈消失,8种数据类型都存在java栈中 + 对象的引用变量 + 实例方法
10. 堆: 存放java对象的元数据


浙公网安备 33010602011771号