一、类加载器

  1.BootstrapClassLoader(启动类加载器)

   它主要负责加载%JAVA_HOME%/jre/lib,-Xbootclasspath参数指定的路径以及%JAVA_HOME%/jre/classes中的类。

  2.ExtensionClassLoader  (扩展类加载器)

   ExtClassLoader主要加载%JAVA_HOME%/jre/lib/ext,此路径下的所有classes目录以及java.ext.dirs系统变量指定的路径中类库。

   3.AppClassLoader

   AppClassLoader主要负责加载classpath所指定的位置的类或者是jar文档,它也是Java程序默认的类加载器。

  他们之间为父子类关系,双亲委托机制是父及子去递归调用加载器,沙箱安全机制使用户无法替换JDK本身的类。

  此外可以用户自定义加载类,定义自已的类加载器分为两步:1、继承java.lang.ClassLoader2、重写父类的findClass方法。

classloader的作用是将字节码文件读取到内存,是JVM的入口

二、执行引擎(Execution Engine)

  执行引擎的作用是解释命令,提交给操作系统执行

三、本地方法栈(线程私有)

  通过执行native方法,通过本地方法接口调用本地方法库

四、程序计数器(线程私有)

  可看做是指针,指向方法区的字节码(即下条指令的地址),内存很小

五、虚拟机栈(线程私有)

  生命周期与线程一致。8种基本类型变量,对象的引用变量,实例方法都是在函数的栈内存分配,主要保存三种数据:

    1.本地变量:输入输出参数、方法内变量

    2.栈操作 :出栈、入栈等操作

    3.栈帧数据:类文件、方法等

六、方法区(线程共享)

  用于储存静态变量、常量、类信息(构造函数/接口定义)、运行时常量池。

   虽然Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java 堆区分开来。

七、堆(线程共享)

  一个JVM对应着一个堆,用于存放对象实例。可以通过参数-Xms-Xmx来控制。默认1/64和1/4。用来储存实例对象。

  

  

最新文章

  1. Jquery 下实现 图片大图预览效果
  2. linux /etc/profile和/etc/bashrc
  3. Correlation Filter in Visual Tracking系列二:Fast Visual Tracking via Dense Spatio-Temporal Context Learning 论文笔记
  4. 用sql从一张表更新数据到另外一张表(多表数据迁移)
  5. 【原创】MYSQL++源码剖析——前言与目录
  6. Mobiles Wall – 致力于分享最优质的手机壁纸
  7. js之数组,对象,类数组对象
  8. oracel数据库基本知识和基本查询方法
  9. winform之excel导入和导出
  10. sql 自定义函数--十进制转二进制
  11. XML格式以及相关libxml库学习
  12. ubuntu 13.10 install wireshark
  13. 环境搭建之allure的安装配置,及简单使用
  14. yumiot的发展历程。
  15. JMeter 中_time 函数的使用(时间戳、当前时间)
  16. linux shell脚本之-变量极速入门与进阶(2)
  17. redis分布式工具类 ----RedisShardedPoolUtil
  18. assert用法
  19. winform/timer控件/权限设置/三级联动
  20. tf tensor 输出

热门文章

  1. axios 提交 application/x-www-form-urlencoded
  2. 并发-Java并发编程基础
  3. 安装mysql5.7.17
  4. C++继承经典样例
  5. silverlight,WPF动画终极攻略之迟来的第三章 动画整合篇(Blend 4开发)
  6. PYC文件简介
  7. 【Struts2学习笔记(3)】至Action注入属性值
  8. 大数据_zookeeper环境搭建中的几个坑
  9. WPF - 本质:数据和行为
  10. 有了VARCHAR,为什么还要有CHAR?