热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:JVM01_整体概述

篇首语:本文由编程笔记#小编为大家整理,主要介绍了JVM01_整体概述相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了JVM01_整体概述相关的知识,希望对你有一定的参考价值。






文章目录


  1. 整体结构
  2. 详细结构
  3. 架构模型
  4. JVM生命周期

1、整体结构
  • Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。
  • jvm是运行在操作系统之上的,与硬件没有直接交互。

在这里插入图片描述


2、详细结构

原图:https://img-blog.csdnimg.cn/20210518203736751.png
译图:
在这里插入图片描述


3、架构模型
  1. 基于的指令集架构:跨平台性(无需硬件支持)、指令集小、指令多、执行性能比寄存器差。无需寻址(零地址指令方式分配)。
  2. 基于寄存器的指令集架构:依赖硬件、指令集大,执行效率高、需要寻址(一、二、三地址指令)

java指令集是基于栈的

public class StackStruTest {
public static void main(String[] args) {
int i = 2;
int j = 3;
int var = i + j;
}
}

对生成的字节码文件进行反编译

javap -v StackStruTest.class

Code:
stack=2, locals=4, args_size=1
0: iconst_2 //常量2
1: istore_1 //放到操作数栈索引位置1
2: iconst_3 //常量3
3: istore_2 //放到操作数栈索引位置2
4: iload_1 //加载 操作数栈索引位置1 也就是 i
5: iload_2 //加载 操作数栈索引位置2 也就是 j
6: iadd //常量2、3出栈,执行相加
7: istore_3 //将结果k 保存在 操作数栈索引位置3
8: return
LineNumberTable:

4、JVM生命周期
  1. 启动
    通过引导类加载器(Bootstrap class loader)创建一个初始类(initial class)完成。
    初始类由虚拟机的具体实现指定。
  2. 执行
    执行一个java程序,就是执行一个叫做java虚拟机的进程。
  3. 退出
    程序结束、异常/错误、操作系统错误导致的JVM进程终止、Runtime/System类的exit方法(调用native的halt0())





推荐阅读
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • JVM钩子函数的应用场景详解
    本文详细介绍了JVM钩子函数的多种应用场景,包括正常关闭、异常关闭和强制关闭。通过具体示例和代码演示,帮助读者更好地理解和应用这一机制。适合对Java编程和JVM有一定基础的开发者阅读。 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https:blog.csdn.netweixin_43171186art ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
author-avatar
爱中华爱美丽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有