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对象的元数据

 

posted @ 2020-02-13 00:24  MrSans  阅读(72)  评论(0)    收藏  举报