JVM虚拟机基础
JVM 全称Java Virtual Machine,也就是我们耳熟能详的Java 虚拟机。它能识别.class 后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作。
Java执行流程
当我们编写完程序之后文件就是.Java文件通过Javac指令编译之后就是.class文件,之后就是由JVM将类加载到方法区中,执行引擎执行这些字节码。
过程如下:Java 文件->编译器>字节码->JVM->机器码。
JVM的跨平台、跨语言性
跨平台
Java官网提供了各个系统版本的JDK,我们根据系统下载对应版本的JDK就可以将我们写的类运行在不同的操作系统上。
官网直达:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

跨语言
因为JVM是通过识别字节码(.class文件)的方式进行运行的,所以只要其他语言如果也可以编译为字节码文件则也可以在JVM上运行,例如:Groovy、Kotlin等等一些语言。所以JVM也是一定程度上奠定了Java强大的生态圈。

JVM相关实现
JVM规范的存在提供了一些JVM的具体的实现。
HotSpot
使用最多的Java虚拟机,通过javac -version的命令可以看到。
Jrocket
原隶属于BEA公司,号称最快的JVM,后被Oracle所收购,与HotSpot所合并。
J9
IBM公司的JVM,主要用于自家产品上(IBM WebSphere 和IBM 的AIX 平台)。
TaobaoVM
淘宝根据HotSpot为自身定制的JVM,目前阿里、天猫都在使用。
zing
属于zual公司,很牛,但是很贵。它的垃圾回收速度非常快,之后它的垃圾回收算法被HotSpot所吸收形成了现在的ZGC。
JVM 整体知识模块
从下图中可以看到JVM的知识模块是比较多的,但是基本上都会与内存结构牵扯到一些关系,所以内存结构是非常重要的一块知识点。

JVM虚拟机基础的更多相关文章
- JVM虚拟机基础知识
1. Java的发展 Java之父:詹姆斯·高斯林 2. Java的技术体系 Java 程序设计语言 JVM class文件格式 编译器 Java API 第三方Java类库 三个版本: Java S ...
- 设置TOMCAT的JVM虚拟机内存大小
你知道如何设置TOMCAT的JVM虚拟机内存大小吗,这里和大家分享一下,JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序.这个初始内存和最大内存在一定程度都会影响程序的性能. 设置 ...
- Java虚拟机基础
Java虚拟机基础 JVM是Java Virtual Machine的缩写.JVM是一个可以将Java字节码转换成机器语言并能被机器(电脑)执行的Java字节码处理引擎.Java字节码是处于Java和 ...
- java语言与jvm虚拟机简介
一.java语言 1.1 支持面向对象编程oop 强调支持,因为java同样可以面向过程编程. oop的三大特性是:封装.继承.多态. 封装主要针对成员变量而言,oop的思想要求成员变量均为私有,不应 ...
- 【JVM虚拟机】(8)--深入理解Class中--方法、属性表集合
#[JVM虚拟机](8)--深入理解Class中--方法.属性表集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机] ...
- 程序员从宏观、微观角度浅析JVM虚拟机!
1.问题 1.JAVA文本文件如何被翻译成CLASS二进制文件? 2.如何理解CLASS文件的组成结构? 3.虚拟机如何加载使用类文件的生命周期? 4.虚拟机系列诊断工具如何使用? 5.虚拟机内存淘汰 ...
- JVM虚拟机深入理解+GC回收+类加载
旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81455449 一,前言 本文章是读了“深入理 ...
- 推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)
欢迎一起学习 <提升能力,涨薪可待篇> <面试知识,工作可待篇 > <实战演练,拒绝996篇 > 欢迎关注我博客 也欢迎关注公 众 号[Ccww笔记],原创技术文章 ...
- 深入理解JVM虚拟机7:JNDI,OSGI,Tomcat类加载器实现
打破双亲委派模型 JNDI JNDI 的理解 JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一 ...
随机推荐
- Flink如何做维表关联?
使用 RichAsyncFunction 加 CacheBuilder CacheBuilder.newBuilder() //最多存储10000条 .maximumSize(10000) //过期时 ...
- post 和php://input
$_POST['paramName'] 获取通过表单(multipart/form-data)提交的数据.但有时客户端会直接将请求数据以字符串的形式都放到 body 里传递过来,那么服务端就需要使用 ...
- OSPF --- 不规则区域实验
OSPF不规则区域实验: 一.知识点整理: OSPF中路由器的角色(看图): 骨干路由器:路由器所有接口属于area 0 -->R3 非骨干路由器:路由器所有接口属于非area 0 --&g ...
- CentOS7 实战源码部署php服务与nginx 的整合
简介:实战演练php服务的搭建 PHP是一种脚本语言,常用于做动态网站的. 源码编译安装: 安装依赖组件: yum -y install gcc gcc-c++ bzip2 bzip2-devel b ...
- 微信小程序--页面与组件之间如何进行信息传递和函数调用
微信小程序--页面与组件之间如何进行信息传递和函数调用 这篇文章我会以我自己开发经验从如下几个角度来讲解相关的内容 页面如何向组件传数据 组件如何向页面传数据 页面如何调用组件内的函数 组件如何调 ...
- Amazing 2020
Amazing 2020 Intro 2020 转眼即逝,2020 是比较艰辛的一年,因为疫情原因,很多人的工作以及生活都多多少少受到了一些影响. 引用网上盛传的一句话--2020 实"鼠& ...
- 单细胞分析实录(1): 认识Cell Hashing
这是一个新系列 差不多是一年以前,我定导后没多久,接手了读研后的第一个课题.合作方是医院,和我对接的是一名博一的医学生,最开始两边的老师很排斥常规的单细胞文章思路,即各大类细胞分群.注释.描述,所以起 ...
- .NET 云原生架构师训练营(模块二 基础巩固 MongoDB 介绍和基础)--学习笔记
2.5.1 MongoDB -- 介绍 mysql vs mongo 快速开始 mysql vs mongo 对比 mysql mongo 数据存储 table 二维表结构,需要预先定义结构 json ...
- 深入理解linux-free命令原理(2)
linux free 命令用法说明 概述: 这篇文章比较深入的从free为起点 折射出的一些概念:比如 buff/cache是怎么一回事[涉及内存页等话题]: available这个参数与fre ...
- Io流阶段大总结
字节流结构 输入流: ObjectInputStream:从文件中读取对象 FileInputStream:从文件中输入(读)字节 BufferedInputStream:底层有缓冲数组,在不定义数组 ...