JVM 简介_忠哥哥1号的博客-程序员宅基地

技术标签: jvm  java  

JVM 组成

JVM包含两个子系统和和两个组件,连个子系统为类装载(Class Loader)和执行引擎(Execution engine);两个组件为运行时数据区(Runtime data area),本地接口(Native Interface)。
类装载(Class Loader):根据给定的全限定名类名(如:java.lang.Object)来装载class 文件到 运行时数据区(Runtime data area )中的方法区(method area)
执行引擎(Execution engine):执行classes 中的指令。
本地接口(Native Interface) :与native libraries 交互,是其他编程语言交互的接口。
运行时数区域(Runtime data arae):这就是我们常说的JVM 内存

在这里插入图片描述

JVM 作用

首先通过编译器把java代码转换成字节码,类加载(Classloader)器再把字节码加载到内存中,将其放在运行时数据区(Runtime data area)的方法区(method area)内,而字节码文件只是JVM的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层系统指令,再交由cpu 去执行,而这个过程中需要调用其他语言的本地库接口(Native Interface) 来实现整个过程

java 程序运行机制的详细说明

1.首先利用IDE集成开发工具编写java源代码,源文件的后缀为:【.java】
2.再利用编译器(javac命令)将源代码编译成字节码文件,字节码文件的后缀为:【.class】
3.运行字节码的工作是由解释器(java命令来执行)
在这里插入图片描述

从上图可以看到。java文件通过编译器变成了class文件,接下来类加载器又将这些class文件加载到JVM中
总结:类的加载指的是将类的class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆中创建一个java.lang.Class对象来封装类在方法区的数据结构。

JVM运行时数据区

java 虚拟机在执行java程序的过程中会把它管理的内存区域划分成若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有些区域随着虚拟机进程单位启动而存在,有些区域则是依赖线程的启动和结束而建立和销毁。java 虚拟机所管理的内存被划分为如下几个区域
在这里插入图片描述
不同虚拟机的运行时数据区可能会略微有所不同,但都会遵从java 虚拟机规范,java虚拟机规范规定的区域分为以下五部分:
程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转,异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
java 虚拟机栈(Java Virtual Machine Stacks):用于存储局部变量表,操作数栈,动态链接,方法的出口等信息。
本地方法栈(Native Method Stack):与虚拟机栈的作用是一样的,只不过虚拟机栈是服务java方法的,而本地方法栈是为虚拟机调用native方法服务的。
java推(java Heap):java 虚拟机中内存中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存,
方法区(Method area):用于存储已经被虚拟机加载的类信息,常量,静态变量,即时编译后的代码等数据。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41948398/article/details/123759267

智能推荐

CREATE TABLE A LIKE B_tianlianchao1982的博客-程序员宅基地

CREATE TABLE A LIKE B此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来。2.CREATE TABLE A AS SELECT x,x,x,xx FROM B LIMIT 0此种方式只会将表B的字段结构复制到表A中来,但不会复制表B中的索引到表A中来。这种方式比较灵活可以在复制原表表结构的同时指定要复制哪些字

python3 文件相关学习笔记(18)_非月2021的博客-程序员宅基地

上一节讲了部分文件的操作,这部分补充部分内容#Python3 File(文件)#Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError'''使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。open() 函数常用形式是接收两个参数:文件名(file)和模式(...

AM335X can驱动移植_weixin_34167819的博客-程序员宅基地

驱动选择 make menuconfig [*] Networking support ---> <*> CAN bus subsystem support ---> --- CAN bus subsystem support <*> Raw CAN Pro...

lvs 代理三种模式_why_upup的博客-程序员宅基地_lvs代理模式

1.tunnel模式四台服务器:DR=192.168.84.130VIP=192.168.84.199RIP1=192.168.84.131RIP2=192.168.84.132RIP3=192.168.0.102lvs服务器脚本:#!/bin/bash#lvs script(tunnel mode)DR=192.168.84.130VIP=192.168.84.199RIP1=192.168.84.131RIP2=192.168.84.132RIP3=192.168.

Android的onMeasure和onLayout And MeasureSpec揭秘_飞翔的熊blabla的博客-程序员宅基地

Android中自定义ViewGroup最重要的就是onMeasure和onLayout方法,都需要重写这两个方法,ViewGroup绘制 的过程是这样的:onMeasure → onLayout → DispatchDraw[java] view plaincopy  其实我觉得官方文档解释有大大的问题,刚开始一直很疑惑onMe

怎么用leangoo做缺陷管理?_weixin_34241036的博客-程序员宅基地

缺陷管理通常关注如下几个方面:1. 缺陷的处理速度2. 缺陷处理的状态3. 缺陷的分布4. 缺陷产生的原因使用Leangoo看板我们可以对缺陷进行可视化的管理,方便我们对缺陷的处理进展、负责人、当前状态、分布情况等各个方面一目了然。下面我们来了解如何使用Leangoo管理缺陷。1. 了解缺陷的进展和状态在leangoo中,我们可以为一个项目或者产品创建一个或者多个缺陷管...

随便推点

维修电工仪表照明实训考核装置_9#月芳的博客-程序员宅基地

ZN-81DDF维修电工仪表照明实训考核装置ZN-81DDF维修电工仪表照明实训考核装置是按照劳动和社会保障部颁发的“工人等级标准”和“职业技能鉴定”的要求而设计的,该装置集理论、实际操作和考核鉴定为一体的多功能设备。它不仅能作为电工仪表和照明电路的操作实训装置。而且也可用于劳动职业技能鉴定部门、大中专院校、职校、技校对初、中、高级维修电工技能考核的理想实训实验设备。一、装置特点:1.电气控制线路元器件都装在作为挂板的安装板上,操作方便、更换便捷,便于扩展功能或开发新实训,操作内容的选择具有典型性和

操作postgre数据库的python脚本_Ray_awakepure的博客-程序员宅基地

连接数据库通过建立connect对象的方式import psycopg2def establish_connection(host, port, dbname, user, password): """ 建立连接关系并返回连接对象 :return: 连接对象 """ try: conn_string = f"host={host} port={port} dbname={dbname} user={user} password={passwo

在Linux系统中安装和使用VNC_weixin_34075268的博客-程序员宅基地

经常使用Linux系统,大部分情况下都是在命令行状态下进行远程维护和管理,如果需要用到图形环境,该用什么工具进行连接维护管理呢?日常使用windows系统维护时都是用pcanywhere或远程桌面进行远程连接进行操作,那Linux下有没有类似pcanywhere的软件吗?答案是当然有了,那就是VNC,一个可以与pcanywhere相媲美软件。 下面就让...

linux进程通讯之CD程序_weixin_33836874的博客-程序员宅基地

2019独角兽企业重金招聘Python工程师标准>>> ...

项目中使用http referer,为了盗取图片资源_weixin_30533797的博客-程序员宅基地

项目背景:因为图片的数据是爬取的别人的图片,而且保存的数据仅仅是图片地址链接,为了减少数据存储和服务器压力,但是这就引发一个问题,有的图片地址没有做防盗处理,可以随意的下载使用;但有些图片的服务器做了处理,其他的域名访问图片都拒绝请求,我遇到的就是使用了HTTP Referer的方式获取,从哪个网站发起的请求,如果不是本网站都拒绝,这样就没有办法获取他的图片;最后查阅资料发现有很多的办法...

SpringMVC体系_楠~枫的博客-程序员宅基地

三层架构:表现层业务层数据层mvc:M:Model数据模型,封装数据的javabeanV:View视图,前端展示的一些东西(jsp.html)C:Controller控制器,处理交互的调度,SpringMVC就属于这一层SpringMVC:SpringMVC是一种基于Java实现的轻量级控制层(web)框架!...