[java] 虚拟机(JVM)底层结构详解[转]
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188
在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架。这里面应该包含了在java领域里面的大部分内容了吧。但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助。尤其也对以后java开发中的性能优化有很大帮助,可以使我们减少一些没必要的内存浪费等好处。所以,从今天开始,我将和大家一起来学习一下java虚拟机的内容。从底层开一下java的运行机制。
Java虚拟机
Java虚拟机(Java Virtual Machine) 简称JVM Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。下面我们就来看一下这几部分比较重要的java虚拟机的结构
JVM寄存器
所有的CPU均包含用于保存系统状态和处理器所需信息的寄存器组。如果虚拟机定义义较多的寄存器,便可以从中得到更多的信息而不必对栈或内存进行访问,这有利于提高运行速度。然而,如果虚拟机中的寄存器比实际CPU的寄存器多,在实现虚拟机时就会占用处理器大量的时间来用常规存储器模拟寄存器,这反而会降低虚拟机的效率。针对这种情况,JVM只设置了4个最为常用的寄存器。它们是:pc程序计数器,optop操作数栈顶指针 ,frame当前执行环境指针, vars指向当前执行环境中第一个局部变量的指针, 所有寄存器均为32位。pc用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。
Java虚拟机从启动到结束的生命周期,当java虚拟机启动后,在如下几种情况下,Java虚拟机将结束生命周期:
Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区。
在运行环境中包含的信息用于动态链接,正常的方法返回以及异常捕捉。
上面对虚拟机的各个部分进行了比较详细的说明,下面通过一个具体的例子来分析它的运行过程。
虚拟机通过调用某个指定类的方法main启动,传递给main一个字符串数组参数,使指定的类被装载,同时链接该类所使用的其它的类型,并且初始化它们。例如对于程序:
public static void main(String[] args)
System.out.println("Hello World!");
for (int i = 0; i < args.length; i++ )
转载于:https://www.cnblogs.com/lkboy/p/4162020.html
[java] 虚拟机(JVM)底层结构详解[转]相关推荐
- Java虚拟机(JVM)默认字符集详解
Java中对字符串等进行转换字节数组时, 需要根据字符集编码来进行转换, 当不显示的指定字符集编码时(如: "测试".getBytes()), 会使用Charset.default ...
- Java虚拟机之垃圾回收详解一
Java虚拟机之垃圾回收详解一 Java技术和JVM(Java虚拟机) 一.Java技术概述: Java是一门编程语言,是一种计算平台,是SUN公司于1995年首次发布.它是Java程序的技术基础,这 ...
- Java虚拟机中类加载机制详解
Java虚拟机中类加载机制详解 1,什么是java类加载机制 **首先在java中,是通过编译来生成.class文件(可能在本地,或者网页下载),java的类加载机制就是 将这些.class文件加载到 ...
- 学习笔记:Java虚拟机——JVM内存结构、垃圾回收、类加载与字节码技术
学习视频来源:https://www.bilibili.com/video/BV1yE411Z7AP Java类加载机制与ClassLoader详解推荐文章:https://yichun.blog.c ...
- java虚拟机编码格式_Java虚拟机(JVM)默认字符集详解
Java中对字符串等进行转换字节数组时, 需要根据字符集编码来进行转换, 当不显示的指定字符集编码时(如: "测试".getBytes()), 会使用Charset.default ...
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine ,既然是虚拟机, ...
- java虚拟机启动参数分类详解
HotSpot是较新的Java虚拟机技术,用来代替JIT(Just in Time)技术,可以大大提高Java运行的性能.Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢.而该技术将常 ...
- Java虚拟机:类加载机制详解
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 大家知道,我们的Java程序被编译器编译成class文件,在class文件中描述的各种信息,最终都需要加载到虚拟机内存才能运行和使用,那么 ...
- 吃透Java并发:AQS结构详解及其CLH变种、CLH、MCS
目录 1.前言 2.AQS的构成 2.1 状态信息state 2.2 节点信息Node 2.3 阻塞/唤醒 2.4 当前持有锁线程 2.5 头结点与尾节点 3.CLH队列 3.1 CLH锁 3.2 M ...
最新文章
- CPU亲和性的使用与机制--含Xen中VCPU和PCPU的綁定方法
- 计算机协会科创部部长职责,学生会科创部工作计划
- 大数据 -- zookeeper和kafka集群环境搭建
- JavaScript----BOM(浏览器对象模型)
- Window上安装kafka
- webpack的五个核心概念---webpack工作笔记002
- C++基础教程之C++数据抽象
- 【NDSS 2021】On the Insecurity of SMS One-Time Password Messages against Local Attackers 论文笔记
- ADB 环境变量配置教学
- android 信鸽推送点击消息跳转问题,信鸽推送 Android 跳转Activity
- TS OLT Internet业务和组播业务(multicast)配置指导
- Po.et正式推出为出版商打造的API层应用—Frost
- VM12 启动虚拟机问题汇总
- 计算机中选中多个文件的快捷键,电脑操作过程中同时选定多个文件的方法
- 乐观锁和悲观锁区别以及使用场景
- Promise构造函数的方法1:Promise.resolve()和Promsie.reject()
- 情境领导者-第三章、评估情境
- 解决grafana 加载速度慢问题
- 为什么很多人辛劳一生,仍然生活在社会底层?
- Windows获取精确系统时间-微秒级