1.初步认识JVM -- JVM序列

1.JVM概念

JVM是java Virtual Machine的简称。也称为Java虚拟机。

虚拟机:通过软件模拟具有完整硬件功能的运行在一个完全隔离环境的完整计算机系统。VMWare、Visual Box、JVM

VMWare、Visual Box 都是模拟物理CPU的指令集。而JVM是软件模拟Java字节码的指令集

2.JVM发展历史

96年SUN JDK 1.0 class VMWare、Visual

97年JDK 1.1:具有AWT、内部类、JDBC、RMI、反射

98年JDK 1.2:有JIT解析器、精确内存管理、提升GC性能

2000年JDK 1.3:Hotspot发布默认的虚拟机

2002年JDK 1.4:VM退出

2004年JDK 1.5:具有泛型、注解、装箱、枚举、可变长的参数、foreach循环等

JDK 1.6:具有脚本语言支持、JDBC 4.0

JDK 1.7:延时推出,G1,动态语言增强、64位系统中的压缩指针、NIO 2.0

2014 JDK 1.8:lambda表达式、语法增强、java类型增强

2016 JDK1.9:模块化

3.JVM种类

KVM:用于手机系统;

Hotspot:设备上建立统一的JAVA的接口

IBM J9 VM:IBM内部使用

apache harmony:兼容JDK1.5和JDK1.6

Hotspot、JRockit,JRockit优点移植到Hotspot,会逐渐放弃JRockit。

4.JAVA语言规范

主要在于:语法、变量、类型、文法的定义。什么是java语言。

5.JVM规范

class文件类型、运行时数据、帧栈、虚拟机启动以及其指令集。什么是JVM。

java和JVM是相对独立的

只要符合JVM规范的就可以运行在JVM上,比如scala跟java规范是不一样的但是都可以运行在JVM上。

二进制:         00000101

原码: 00000101            10000101    //0为正数,1为负数

反码: 01111010            11111010    //原码基础上符号位不变,其他位取反

补码: 01111011            11111011    //在反码基础上符号位不变加1

注意:使用补码可以直接相加减加快计算提升性能。符号位参与计算。

IEEE 754 :s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmmm

e全0附加位为0,负责为1;

s*m*2^(e-127)

JVM需要对Java library提供一下支持:

反射、类装载、初始化类以及接口、安全相关、多线程、弱引用。

JVM的编译

反编译看源码(这里不做介绍)

标注:本文是经由本人学习炼数成金JVM课程的笔记。

时间: 2024-08-28 03:42:56

1.初步认识JVM -- JVM序列的相关文章

【转】深入理解JVM—JVM内存模型

http://www.cnblogs.com/dingyingsi/p/3760447.html#3497199 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变

深入理解JVM—JVM内存模型

原文地址:http://www.lofter.com/app/QRCodedownload?act=qbbkdlxz_20150313_13 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因

(转)深入理解JVM—JVM内存模型

原文地址:http://www.cnblogs.com/dingyingsi/p/3760447.html 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下

JVM | JVM的核心技术

说到JVM,很多工作多年的老铁,可能就有点发憷了,因为搬砖多年,一直使用java这个工具,对于JVM没有了解过,有句话面试造航母,上班拧螺丝,要啥自行车啊,知道如何搬砖就可以了,为啥要懂这么多,如果你有很强的商业头脑,不需要了解太多深入的东西,只要完成业务功能就可以了,如果你口才也不行,只有一个编程的大脑,老铁沉下心咱们一起了解下,你平常拧螺丝的扳手的结构把,这个真心有用.因为它可以让你走的更远,挣的更多! JVM JVM一些概念 什么是JVM JVM是Java Virtual Machine(

[JVM] JVM类加载机制总结

一  什么是类的加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 类的加载指的是将类从“.java”代码文件编译成的“.class”字节码文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区(HotSpot虚拟机在方法区中)创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象

深入理解JVM JVM内存模型

1.JVM内存模型        说起JVM内存模型,都是知道是Java方法区.Java栈.Native方法区.Java堆和程序计数器五部分,不过具体是做什么的,又有什么关系可能大家就不太清楚了,所以话不多说,直接上干货. 首先是JVM内存规范. 编译器和类加载在上篇博客已经讲了,不了解的可去看一下.现在主要就是运行时数据区了.具体请看下图 先给简单介绍一下什么是堆.桟.方法区以及格子 首先就是堆与栈分开设计是为什么呢? 栈存储了处理逻辑.堆存储了具体的数据,这样隔离设计更为清晰堆与栈分离,使得

2.JVM运行机制 -- JVM序列

上一次写了1.初步认识JVM -- JVM序列,今天接着记录写JVM的运行机制. 一.JVM启动流程 Java平台包括JVM以及Java语言,其中JVM也是运行在操作系统中的一个应用程序进程,那么也应该有自己的生命周期以及内存空间.一般情况下java或javac命令执行过程大概如下: 输入java(javac)命令 装载环境以及配置(根据当前路径和系统版本寻找jvm.cfg) 根据配置寻找定位并加载JVM.DLL 初始化JVM获得JNIEnv接口 找到main方法 注意在装载环境以及配置中首先查

初步了解JVM第一篇

大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 废话不多说,直接带大家来初步认识一下JVM. 什么是JVM? JVM(Java Virtual Machine)是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据.内存和寄存器. 看到这里,可能不懂JVM的人,已经蒙圈了.没关系,下面让我详细为大家介绍JVM的体系架构图,或许你会明白些. 简单来说,JVM就是

一夜搞懂 | JVM 线程安全与锁优化

前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 一.为什么要学习内存模型与线程? 之前我们学习了内存模型和线程,了解了 JMM 和线程,初步探究了 JVM 怎么实现并发,而本篇文章,我们的关注点是 JVM 如何实现高效 并发编程的目的是为了让程序运行得更快,提高程序的响应速度,虽然我们希望通过多线程执行任务让程序运行得更快,但是同时也会面临非常多的挑战,比如像线程安全问题.线程上下文切换的问题.硬件和软件资源限制等问题,这些都是并发编程