Java虚拟机基础
Java虚拟机基础
JVM是Java Virtual Machine的缩写。JVM是一个可以将Java字节码转换成机器语言并能被机器(电脑)执行的Java字节码处理引擎。Java字节码是处于Java和机器之间的语言,当其被JVM转化成机器语言时就能被机器执行。
JVM简单介绍
首先简单介绍下Java字节码、JVM以及机器的概念。
当一个Java程序被创建后,后缀为.java的文件也就被创建了。该文件包含多个属性,包括类、方法、对象等等。后缀为.java的文件接着会被Java编译器编译,从而产生后缀为.class的文件(也称为Java字节码文件)。JVM会阅读并理解这个.class文件并将其解释为机器语言,从而能执行这个文件。
JVM这个平台是独立的吗?
Java是平台不独立的因为它需要JVM,虽然JVM是平台独立的。可以运行Java代码的机器上必须要先安装好JVM。在能执行Java字节码的机器上,JVM会解释.class文件并且产生不同的只能被机器理解的机器语言。不同的机器上可能有着不同的操作系统, 例如:Windows、Mac OS、Unix或者Linux。如果机器上没有安装JVM的话,这些操作系统是不能解释Java字节码的,因为一个操作系统只能理解机器语言。JVM将Java字节码转化成机器语言并让它能被操作系统理解和执行。这意味着Java可以运行在任何机器上,前提是该机器上安装了JVM。
JVM的组成
当解释和执行Java字节码的时候,JVM使用了多个组件,例如:栈、寄存器、垃圾回收器等等。接下来让我们对它的组件有个初步的认识:
• 栈:它是方法的参数和本地变量的仓库。它可以被指向不同区域的寄存器熟练控制。
• 寄存器:在JVM中有许多寄存器,比如Vars(指向当前执行环境中第一个局部变量的指针)、Frame(当前环境指针)、PC(程序计数器)和OpTop(操作数栈顶指针)。Vars寄存器指向正在被当前方法使用的本地变量。frame寄存器指向当前执行环境,也就是栈的环境。OpTop寄存器指向运算栈,字节码的指令在这里执行。程序计数器寄存器指向保存字节码的方法区。所有寄存器均为32位。PC用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。
• 方法区:它是保存Java字节码的地方。该区域能被所有线程共享,因此能确保线程同步。
• 垃圾回收器:它是JVM真正保存Java对象的组件。需要注意的是,Java对象的引用是保存在栈中的,而真正的对象在垃圾回收器中。Java使用垃圾回收机制来释放内存并分配给不同的对象,不像C/C++那样要使用运算符来释放内存。
Java虚拟机基础的更多相关文章
- Java虚拟机基础知识
写在前面 之前老大让做一些外包面试,我的问题很简单: 介绍一下工作中解决过比较有意思的问题. HashMap使用中需要注意的点. 第一个问题主要是想了解一下对方项目经验的含金量,第二个问题则是测试下是 ...
- JVM,Java虚拟机基础知识新手入门教程(超级通熟易懂)
作者:请叫我红领巾,转载请注明出处http://www.cnblogs.com/xxzhuang/p/7453746.html,简书地址:http://www.jianshu.com/p/b963b3 ...
- Java虚拟机基础知识你知道多少?
http://www.cnblogs.com/qlky/p/7401841.html java虚拟机结构 http://liuwangshu.cn/java/jvm/1-runtime-data-ar ...
- 大战Java虚拟机【0】——目录
发现一直在上层应用更新博客的我,突然发现也是时候同时更新一波基础知识了.然后就发现了一个点我还没有更新过,那就是Java虚拟机. 很多人在学习Java的时候都或多或少接触过一点,然后几乎有下面几种情况 ...
- 深入理解Java虚拟机-如何利用VisualVM对高并发项目进行性能分析
前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择VisualVM来分析JVM性能 ...
- Java基础:Java虚拟机(JVM)
当我们第一次学习Java时这些原理上的东西就会被提到,但是很少有真正去学习.今天开始从头过一遍Java,打算从JVM开始. 1. JVM是什么 2. JRE和JDK 3. JVM结构 3.1. 程序计 ...
- JVM基础系列第6讲:Java 虚拟机内存结构
看到这里,我相信大家对于一个 Java 源文件是如何变成字节码文件,以及字节码文件的含义已经非常清楚了.那么接下来就是让 Java 虚拟机运行字节码文件,从而得出我们最终想要的结果了.在这个过程中,J ...
- JVM基础系列第2讲:Java 虚拟机的历史
说起 Java 虚拟机,许多人就会将其与 HotSpot 虚拟机等同看待.但实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM.Exact VM.BEA JRock ...
- JAVA基础知识|java虚拟机(JVM)
一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...
随机推荐
- IDEA 单元测试testng入门及testng.xml
直接进入正题: 1.TestNG的运行方式如下: With a testng.xml file 直接run as test suite With ant 使用ant From the command ...
- 2017年7月Web服务器调查报告
在2017年7月的调查中,我们收到了来自1,767,964,429个网站和6,593,508个面向web的计算机的反馈.这是一个小小的进步,网站的数量增加了100万个(+0.06%),面向web的计算 ...
- iOS动画学习-视觉效果
CALayer不仅仅是iOS动画学习-CALayer中介绍的那些内容,他还有一些其他属性,比如shadowColor,borderWidth,borderColor等等,这些属性我们只需要简单点设置就 ...
- (转)maven镜像路径配置
很多maven包无法自动下载怎么办?设置maven镜像setting.xml <mirror> <id>repo2</id> <mirrorOf>cen ...
- 【css】盒子模型 之 概述
摘要 一些基本的概念以及常见使用问题 概述 BFC 是css 中布局的核心 - 盒模型,根据块级元素及行级元素可分为块级容器, 行级容器,但容器内部都遵循 BFC BFC 空间布局 备注: IE 的盒 ...
- SLAM中的优化理论(二)- 非线性最小二乘
本篇博客为系列博客第二篇,主要介绍非线性最小二乘相关内容,线性最小二乘介绍请参见SLAM中的优化理论(一)-- 线性最小二乘.本篇博客期望通过下降法和信任区域法引出高斯牛顿和LM两种常用的非线性优化方 ...
- DDD理论学习系列(12)-- 仓储
DDD理论学习系列--案例及目录 1. 引言 DDD中Repository这个单词,主要有两种翻译:资源库和仓储,本文取仓储之译. 说到仓储,我们肯定就想到了仓库,仓库一般用来存放货物,而仓库一般由仓 ...
- 如何在github制作一个网页
1.首先得先注册一个github账号,官网:https://github.com/ 2.注册完,登录账号进入首页,点右上角的 ‘+’ 创建新的仓库 3. 点击setting,选择一个主题, 4. 选完 ...
- ZOJ - 3469 Food Delivery (区间dp)
When we are focusing on solving problems, we usually prefer to stay in front of computers rather tha ...
- Linux 下安装jetty服务器
jetty和我们通常使用的tomcat一样,是一个开源的servlet容器,特点是轻量易部署,一方面jetty可以作为web容器使用,另一方面也是最一般的方式是jetty以一组jar包的形式发布,所以 ...