JVM基础知识总结
因为没深入搞底层研究,所以也就没做很细致的笔记。相关笔记内容是直接从度娘那儿来的,重新删减、整理和加了点自己的东西。
1、JVM(Java Virtual Machine)是什么:
JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
这样它就能实现平台无关性。

2、支持的数据类型:
byte://1字节有符号整数的补码
short://2字节有符号整数的补码
int://4字节有符号整数的补码
long://8字节有符号整数的补码
float://4字节IEEE754单精度浮点数
double://8字节IEEE754双精度浮点数
char://2字节无符号Unicode字符
JVM没有单独的boolean类型,单个boolean由integer指令处理,boolean数组由byte数组处理
3、JVM的规格:
JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:
JVM指令系统
JVM寄存器
JVM 栈结构
JVM 碎片回收堆
JVM 存储区
4、工作原理:
4.1JVM执行程序的过程:
I.加载.class文件
II.管理并分配内存
III.执行垃圾收集

4.2操作系统装入JVM环境的过程:
因为JVM是一个虚拟计算机,所以运行的时候需要先被OS装入,比如在windows系统下,.操作系统通过jdk中Java.exe来装入JVM:
a.创建JVM装载环境和配置
b.装载JVM.dll
c.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例
d.调用JNIEnv实例装载并处理class类。
5、指令系统:
Java指令同样是由操作码和操作数两部分组成,操作数紧跟操作码后面。
操作码为8位二进制数。如果长度大于8,则被分为两个以上字节存放,采用大端编码方式(字数据的高字节存储在低地址中)。顺带一提,Intel采用的是小端编码(字数据的低字节存储在低地址中)。
在此给出大小端相关知识的学习笔记。
此外,可以了解和学习的相关知识是JNI,即Java本地调用(Java Native Interface),它可以令java程序与本地已编译的代码(比如用c或c++写的代码)交互,但是会丧失平台可移植性。有空再写一写关于JNI的学习笔记。
JVM基础知识总结的更多相关文章
- JVM 基础知识
		JVM 基础知识(GC) 2013-12-10 00:16 3190人阅读 评论(1) 收藏 举报 分类: Java(49) 目录(?)[+] 几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看 ... 
- JVM基础知识(1)-JVM内存区域与内存溢出
		JVM基础知识(1)-JVM内存区域与内存溢出 0. 目录 什么是JVM 运行时数据区域 HotSpot虚拟机对象探秘 OutOfMemoryError异常 1. 什么是JVM 1.1. 什么是JVM ... 
- 【转】JVM 基础知识
		几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看,又添加了一些东西.突然发现,基础真的很重要.学习的过程是一个由表及里,再由里及表的过程,所谓的“温故而知新”.而真正能走完这个轮回的人,也就能 ... 
- JVM基础知识GC
		在网上看到一篇很不错的讲解JVM GC的文章,看完之后觉得可以留着以后多看几遍便转载了下来.但是找了半天也没有找到原作者地址.抱歉不能标明原文地址了.以下是文章内容. 几年前写过一篇关于JVM调优的文 ... 
- JVM基础知识及拓展
		我们可以吧JVM的基本结构分为四块:类加载器.执行引擎.运行时数据区和本地接口.一般来说Java程序在JVM中的执行流程如下: ①.首先我们会利用javac命令将我们所编写的.java源代码文件变异成 ... 
- JVM 基础知识(GC)
		几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看,又添加了一些东西.突然发现,基础真的很重要.学习的过程是一个由表及里,再由里及表的过程,所谓的"温故而知新".而真正能走完 ... 
- jvm基础知识—垃圾回收机制
		1.首先类的实例化.static.父类构造函数执行顺序 我们来看下面的程序代码: public class A { int a1 = 8; { int a3 = 9; System.out.print ... 
- JVM基础知识
		JVM简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.J ... 
- JVM基础知识与配置
		1 怎样设置JVM内存设置 本文向大家简介一下进行JVM内存设置几种方法.安装Java开发软件时.默认安装包括两个目录,一个JDK(Java开发工具箱).一个JRE(Java执行环境,内含JVM),当 ... 
随机推荐
- 0c-34-自动释放池
			#import <Foundation/Foundation.h> #import "Person.h" Person * creatPerson() { Person ... 
- 给指针malloc分配空间后就等于数组吗?
			首先回答这个的问题:严格的说不等于数组,但是可以认为它是个数组一样的使用而不产生任何问题.不过既然这样,那它应该算是个数组吧.所以,一般我们都用“动态数组”这种名字来称呼这种东西. 要讲清楚这个东西, ... 
- 5个基于css3超炫的鼠标滑动按钮动画
			今天给大家分享5个基于css3超炫的鼠标滑动按钮动画.这5个按钮鼠标经过的时候有超炫的动画效果.这5个按钮适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之 ... 
- 用vim处理字符的大小写转换
			转载: http://blog.csdn.net/ruixj/article/details/3765385 http://www.linuxsong.org/2010/09/vim-convert- ... 
- 关于Android中获取Intent里的数据
			Intent获取数据和发送数据的办法: //直接通过Intent发送 intent.putExtra("name","wytings"); //直接通过Inte ... 
- mysql ERROR1405 access deny 问题解决
			sudo /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking 使用这条命令可以跳过开 ... 
- C++-copy constructor、copy-assignment operator、destructor
			本文由@呆代待殆原创,转载请注明出处. 对于一个类来说,我们把copy constructor.copy-assignment operator.move constructor.move-assig ... 
- 13. Android框架和工具之 Android Drawable Factory
			1. AndroidDrawableFactory 一个生成Android应用所需尺寸图片的工具. 托管在Github之中: https://github.com/tizionario/Android ... 
- ArcEngine实现捕捉节点
			来自:http://blog.sina.com.cn/s/blog_4d0b75870100o960.html //获取最近的结点,然后在 OnMouseMove中显示 //pnt:鼠标移动点 // ... 
- 【HTML5 3】《html5 开发精要与实例讲解》 step2 -- 结构元素      (待续)
			主要内容:通过 一个博客网站和一个企业网站的制作 展示如何运用HTML5中的各种 结构元素,构建出一个语义清晰,结构分明的Web3.0时代的网站. 案例1:用HTML5中的结构元素构建一个博客网站 疑 ... 
