zoukankan      html  css  js  c++  java
  • JVM概述

    Java Virtual Mechine,是一种用于计算设备的规范,它是一个虚拟出来的计算机,通过在实际计算机上仿真模拟各种计算机功能来实现的。引入JVM后,java语言在任何平台上运行不需要重新编译。Java语言使用JVM屏蔽了与具体平台相关的信息,使得java源编译程序只需生成在java虚拟机上运行的目标代码,就可以在多种平台上不加修改的运行。

    一般的高级语言,要在不同的平台上运行,需要编译成不同的目标代码。JVM在执行字节码时,把字节码译成具体平台上的具体指令执行。

    JVM有自己完善的硬件架构。如处理器,堆栈等,还有相应的指令系统。

    JVM本质上就是一个程序,当它在命令行启动时,就开始执行保存在某字节码文件中的指令。

    每个java程序都离不开JVM,java程序的运行依靠具体的java虚拟机实例。在JVM中,分别用了子系统,内存区,数据类型以及指令这几个术语来描述。这些组成部分一起展示出一个抽象化的虚拟机内部的抽象体系结构。

    JVM主要分为五大模块:

    类装载器子系统,运行时数据区,执行引擎,本地方法接口和垃圾收集模块。

    大多数JVM实现都是有垃圾收集的。而运行时数据区都是以某种形式存在于每一个java虚拟机实例中。JVM不是真实的物理机它没有寄存器,所以指令是使用java栈来存储中间数据。

    JVM是基于堆栈的虚拟机,JVM为每一个新创建的线程分配一个堆栈。堆栈是操作系统在建立某个进程或者线程时,为其建立的存储区域,该区域具有先进后出的特点。每一个java应用都唯一对应JVM实例,每个实例唯一对应一个堆。应用程序在运行中所创建的所有类实例或数组都放在这个堆中,并有应用所有线程共享。java中所有对象的存储空间都是在堆中分配的,但这个对象的引用是在栈中分配的。

     堆内存用来存储由new新建的对象和数组。由GC来管理。

    栈中存放基本类型或引用类型的变量。

    JVM只有一个堆区被所有线程共享,每个线程包含一个栈区,每个栈中的数据都是私有的,其他栈不能访问。

    方法区又称静态区,跟堆一样,被所有线程共享,方法区中包含的永远都是整个过程中永远唯一的元素,如class,static变量。

  • 相关阅读:
    flutter item列表左右滑动带出按钮选项
    flutter之Dismissible组件
    mac下最好用的抓包工具--charles简单操作教程
    flutter 开起charles抓包代理
    nodejs querystring模块
    node.js 中使用 Mongodb
    MongoDB 的高级查询 aggregate 聚合管道
    Mongodb 关系型数据库表(集合)与表(集合)之 间的几种关系
    Mongodb 的使用以及 Mongodb 账户权 限配置
    MongoDb 大数据查询优化、 MongoDB 索引、复合索引、唯一索引、 explain 分 析查询速度
  • 原文地址:https://www.cnblogs.com/qqguoqin/p/12745483.html
Copyright © 2011-2022 走看看