java虚拟机——总章

栏目: Java · 发布时间: 5年前

内容简介:我并不渴求那些超人类的天赋那种超级英雄

java虚拟机——总章

I’m not looking for somebody with some superhuman gifts

我并不渴求那些超人类的天赋

Some superhero

那种超级英雄

Some fairytale bliss

那些童话般的天赐之福

Just something I can turn to

只是一些我能力所能及的事情

Somebody I can kiss

吻到我爱的人就好

I want something just like this

我想要的不过是这些

something just like this

仅仅是这些而已

2019第一篇文章,java虚拟机系列文章总章,2019,遇见更好的自己!

一、jvm概念

概述

java虚拟机(英语:Java Virtual Machine,缩写为JVM),可以使计算机运行 java 程序或其他语言编写能被编译成java字节码的程序。java虚拟机实现由java虚拟机规范来要求。使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行,也就是“一次编译,到处运行”。

Wiki

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required of a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

上面这个是我是找了下wiki和百度的解释,虽然也不难理解,但我决定还是作一下类比让大家更好明白点。

白话版

首先,作为一个后端开发程序员,大多数人应该都用过vmware这款虚拟机吧,他基本上也就干了个和java虚拟机类似的事。当软件工程师开发一个.exe文件,这东西正常来说只能在window运行,换成macos、 linux 就没啥用了,那咋整,现在弄个装windows的虚拟机,我这.exe文件都在虚拟机上运行,这样就不用管是macos,还是linux,还是windows,反正是只要你有这个虚拟机,我这个.exe就能运行,这样就平台无关了。

然后吧,虚拟机也有macos版、linux版,java虚拟机也类似有不同的平台的版本。虚拟机有vmware,virtualbox等等,但只要虚拟机有win系统都能运行不同的.exe文件,符合一定的规范,同样的java虚拟机也有根据规范实现不同的虚拟机,例如最常用的Sun Hotspot,IBM公司的IBM J9 VM等,虽然有不同的实现但都遵循java虚拟机规范。

所以,java虚拟机真的不是什么妖魔鬼怪,就和我们平时用的虚拟机一样。由于我们需要用java语言开发,所以深入了解java虚拟机就异常重要了。jvm帮助我们管理内存,进行垃圾回收,只有熟悉虚拟机原理才能更好的理解各种内存溢出异常,才能写出gc友好的代码,才能对虚拟机参数进行合适的优化。

二、学习重点

本系列文章主要针对如下几个知识点:

  1. jvm内存结构
  2. 垃圾回收机制
  3. 类加载机制

也就是《深入了解java虚拟机》中的第二部分和第三部分。这里主要以java7为主,但我会适当的与java8进行对比的。

java虚拟机——总章

三、专有名词解释

罗列了一些我在学习jvm过程中遇到的一些名词。

JCP与JSR

JCP( Java Community Process )成立于1998年,是使有兴趣的各方参与定义Java的特征和未来版本的正式过程。 JCP 使用 JSR (Java规范请求, Java Specification Requests )作为正式规范文档,描述被提议加入到Java体系中的的规范和技术。JSR变为 final 状态前需要正式的公开审查,并由JCP Executive Committee投票决定。最终的JSR会提供一个参考实现,它是免费而且公开源代码的。在JCP官网 http://www.jcp.org 中可以查看所有的JSR,下面列举几个大家熟悉的JSR:

1、JSR 14,泛型

2、JSR 51,NIO

3、JSR 175,注解

4、JSR 201,枚举以及自动装箱等

HotSpot

HotSpot的正式发布名称为”Java HotSpot Performance Engine”,是Java虚拟机的一个实现,包含了服务器版和桌面应用程序版,现时由Oracle维护并发布,编写语言是C++。它利用 JIT 及自适应优化技术(自动查找性能热点并进行动态优化,这也是HotSpot名字的由来)来提高性能。如果你在命令行中使用java -version命令就会见到下面这张图的信息。

java虚拟机——总章

包括java的版本、java虚拟机的信息、及相应的位数。

JIT

JIT(英语:Just-in-time compilation)译为即时编译、实时编译,动态编译的一种形式,是一种提高运行效率的方法。通常,程序有两种运行方式:静态编译和动态解释。静态编译的程序在执行前全部被翻译为机器码,而解释执行的则是一句一句边运行边翻译。即时编译器则混合了这二者,一句一句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗。

即时编译器有两种类型,一是字节码翻译,二是动态编译翻译。微软的.NET Framework,还有绝大多数的Java实现,都依赖即时编译以提供高速的代码执行。Mozilla Firefox使用的JavaScript引擎SpiderMonkey也用到了JIT的技术。Ruby的第三方实现Rubinius和 Python 的第三方实现PyPy也都通过JIT来明显改善了解释器的性能。

java技术体系

  • java设计语言
  • java虚拟机
  • Class文件格式
  • Java API类库
  • 来自商业机构的第三方类库

这是Sun公司定义的java技术体系,不过实际上像Scala、Groovy、JRuby这种可以编译为.class文件并运行在jvm上的语言也应该属于Java技术体系中的一员。

四、总结

集合、IO、多线程、虚拟机,java基础知识四大块,本系列文章将是我学习虚拟机的总结。这个系列将重点讲述java内存模型、垃圾回收机制、类加载机制几个方面的内容。

2019,不要停下前进的脚步!

参考资料:

  1. 深入了解Java虚拟机,周志明
  2. Java虚拟机1:什么是Java
  3. jvm知识总览

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深度学习

深度学习

[美] 伊恩·古德费洛、[加] 约书亚·本吉奥、[加] 亚伦·库维尔 / 赵申剑、黎彧君、符天凡、李凯 / 人民邮电出版社 / 2017-7-1 / 168

《深度学习》由全球知名的三位专家Ian Goodfellow、Yoshua Bengio 和Aaron Courville撰写,是深度学习领域奠基性的经典教材。全书的内容包括3个部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。 《深度......一起来看看 《深度学习》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具