java jvm虚拟机_Java虚拟机(JVM)简介

java jvm虚拟机

什么是JVM

Java虚拟机(JVM)是使计算机能够运行Java程序的抽象计算机。

JVM有三个概念:

1.规格

2.实施

3.实例。

该规范是正式描述JVM实现要求的文档。 具有单一规范可确保所有实现都可互操作。 JVM实现是满足JVM规范要求的计算机程序。 JVM的实例是在进程中运行的实现,该进程执行编译为Java字节码的计算机程序。

Java运行时环境(JRE)

Java Runtime Environment(JRE)是一个软件包,其中包含运行Java程序所需的软件。 它包括Java虚拟机实现以及Java类库的实现。 拥有Java商标的Oracle公司通过其名为HotSpot的Java虚拟机分发Java运行时环境。

Java开发套件(JDK)

Java Development Kit(JDK)是JRE的超集,包含Java程序员的工具,例如
javac编译器。 Oracle开发公司直接提供免费的Java开发工具包,或者由Oracle管理的OpenJDK开源项目免费提供Java开发工具包。

JVM的作用

JVM执行以下操作:

  • 加载代码
  • 验证码
  • 执行代码
  • 提供运行时环境

JVM提供了以下定义:

  • 记忆区
  • 类文件格式
  • 寄存器集
  • 垃圾收集堆
  • 致命错误报告等

Java虚拟机架构

1. Classloader: Classloader是JVM的子系统,用于加载类文件。

2.类(方法)区域:类(方法)区域存储每个类的结构,例如运行时常量池,字段和方法数据,方法代码。

3.堆:这是在其中分配对象的运行时数据区域。

4.堆栈: Java堆栈存储框架。它保存局部变量和部分结果,并在方法调用和返回中起作用。

每个线程都有一个专用的JVM堆栈,与该线程同时创建。 每次调用方法时都会创建一个新框架。 当框架的方法调用完成时,该框架将被销毁。

5.程序计数器寄存器: PC(程序计数器)寄存器。 它包含当前正在执行的Java虚拟机指令的地址。

6.本机方法堆栈:它包含应用程序中使用的所有本机方法。

7.执行引擎:它包含:

  1. 虚拟处理器
  2. 解释器:读取字节码流,然后执行指令。
  3. 即时(JIT)编译器

参考


https://zh.wikipedia.org/wiki/Java_virtual_machine

翻译自: https://www.javacodegeeks.com/2017/10/introduction-java-virtual-machine-jvm.html

java jvm虚拟机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux qt应用程序全屏,QT在ubuntu下实现界面全屏,侧边栏隐藏,上边栏隐藏【实例】...

最近做一个Qt项目(ubuntu 14.04),需要将界面全屏,全屏之后,ubuntu侧边栏隐藏,上边栏也隐藏,只显示Qt的界面。那么先介绍几个函数:Qt全屏显示函数:showFullScreen()Qt最大化显示函数:…

copyof java_JDK10——copyOf方法

package com.common.learn;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;/*** author 30378** JDK10中新增73个新功能API类库* 在java.util.List java.util.Set java.util…

Linux 命令之 w 命令-显示目前登入系统的用户信息

文章目录介绍常用选项参考示例显示目前登入系统的用户信息不打印头信息显示用户从哪登录使用短输出格式介绍 w 命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。…

linux系统引导分区,揭秘Linux(二)——操作系统引导与硬盘分区

通过前面的介绍想必大家对Linux有了个基础的了解,那么各位肯定该说是不是要装操作系统了,对不起让各位失望了,这次所讲解的是Linux运行原理与硬盘分区,这是重中之重啊!请一定要细细品读。为了更好地了解Linux系统的运行…

jax-rs/jersey_JAX-RS 2.1的Jersey客户端依赖性

jax-rs/jersey泽西岛是JAX-RS 2.1的参考实现。 为了在企业容器外部运行具有JSON-P和JSON-B映射的JAX-RS 2.1客户端&#xff0c;需要以下Jersey依赖项。 Jersey客户端2.6版实现了JAX-RS 2.1 API。 以下依赖性将客户端运行时添加到项目中&#xff1a; <dependency><gr…

get占位符传多个参数_mybatis多个参数(不使用@param注解情况下),sql参数占位符正确写法...

useActualParamName配置useActualParamName允许使用方法签名中的名称作为语句参数名称。 为了使用该特性&#xff0c;你的工程必须采用Java 8编译&#xff0c;并且加上-parameters选项。(从3.4.1开始)true | falsetruemybatis的全局配置useActualParamName决定了mapper中参数的…

HTTP协议简介_请求消息/请求数据包/请求报文_响应消息/响应数据包/响应报文

文章目录HTTP 介绍请求数据包/请求消息/请求报文请求数据包解析响应数据包/响应消息/响应报文HTTP 介绍 概念&#xff1a;Hyper Text Transfer Protocol 超文本传输协议 传输协议&#xff1a;定义了客户端和服务器端通信时发送数据的格式 特点: 1.基于TCP/IP的高级协议 2.默认…

Linux的open函数的调用过程,Linux 中open系统调用实现原理

用户空间的函数在内核里面的入口函数是sys_open通过grep open /usr/include/asm/unistd_64.h查找到的#define __NR_open2__SYSCALL(__NR_open, sys_open)观察unistd_64.h&#xff0c;我们可以猜测用户空间open函数最终调用的系统调用号是2来发起的sys_open系统调用(毕竟glibc一…

java登录界面命令_Java命令行界面(第29部分):自己动手

java登录界面命令本系列有关从Java解析命令行参数的系列简要介绍了28个开源库&#xff0c;这些库可用于处理Java代码中的命令行参数。 即使涵盖了这28个库&#xff0c;该系列也没有涵盖用于解析Java命令行选项的所有可用开源库。 例如&#xff0c;本系列文章未涉及docopt &…

log nginx 客户端请求大小_nginx

博主会将与Nginx有关的知识点总结到"nginx短篇系列"文章中&#xff0c;如果你对nginx不是特别了解&#xff0c;请按照顺序阅读"nginx短篇系列"&#xff0c;以便站在前文的基础上理解新的知识点。当我们访问nginx服务时&#xff0c;nginx会记录日志&#xf…

Linux 下如何查询 tomcat 的安装目录

在命令终端输入如下命令&#xff1a; [roothtlwk0001host ~]# sudo find / -name *tomcat*

rxjava 背压_背压加载文件– RxJava常见问题解答

rxjava 背压事实证明&#xff0c;将文件作为流进行处理非常有效且方便。 许多人似乎忘记了&#xff0c;自Java 8&#xff08;3年以上&#xff01;&#xff09;以来&#xff0c;我们可以很容易地将任何文件变成一行代码&#xff1a; String filePath "foobar.txt"; …

linux 卸载nfs device is busy,umount.nfs: device is busy解决办法

&period;NET Core全新的配置管理&lbrack;共9篇&rsqb;提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两 ...Windows无法安装到G…

php 时间加法函数_php 时间加减

date_default_timezone_set(PRC); //默认时区echo"今天:",date("Y-m-d",time()),"";echo "今天:",date("Y-m-d",strtotime("18 june2008")),"";echo "昨天:",date("Y-m-d",strtoti…

如何用xapmm测试php_如何在Xampp中运行PHP程序?

成为经过认证的专业PHP是最流行的web后端编程语言。PHP代码将作为web服务器模块或命令行界面运行。要运行PHP for the web&#xff0c;您需要安装像Apache这样的web服务器&#xff0c;还需要像MyS成为经过认证的专业PHP是最流行的web后端编程语言。PHP代码将作为web服务器模块或…

中文标点符号大全

文章目录常见的中文标点符号标点符号的位置中文的标点符号包括句号&#xff0c;逗号&#xff0c;感叹号&#xff0c;问号&#xff0c;引号&#xff0c;冒号等等&#xff0c;接下来分享常见的中文标点符号名称。常见的中文标点符号 句号 。 用于句子末尾&#xff0c;表示陈述语气…

linux 查看链接最终目标,linux学习笔记7-链接

hard link and soft link硬链接&#xff1a;一个文件两个不同的进入&#xff0c;相当于一个教室两个门&#xff0c;从哪个门进都进到同一个教室硬链接特征&#xff1a;1、拥有相同的 i节点 和相同的存储block快&#xff0c;可以看做是同一个文件2、可通过i节点识别&#xff0c;…

apache.camel_Apache Camel 2.20发布–新增功能

apache.camelApache Camel 2.20已于今天发布&#xff0c;并且像往常一样&#xff0c;我受命撰写有关此出色新版本及其亮点的博客。 该版本具有以下重点。 1&#xff09;Java 9技术预览支持 我们已经开始支持Java 9的工作&#xff0c;此版本称为技术预览。 源代码在Java 9上…

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法

操作无法完成(错误 0x000006ba)&#xff0c;Windows 11 PDF打印机无法使用解决办法 解决方式一 先重启一次电脑&#xff0c;看看是否可以解决问题。 解决方式二 重新启动 Printer Spooler 服务

java 头像 微信群_java怎么生成带用户微信头像的图片,并把这张图片发送给用户。...

展开全部这个是要一个图片中嵌套另外一张图片你可以62616964757a686964616fe59b9ee7ad9431333431336163试试下面这段代码import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOE…