1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上 ...
分类:
其他好文 时间:
2017-05-11 18:32:28
阅读次数:
229
一、JVM 1、内存模型 1.1.1 内存分几部分 (1)程序计数器 可看作当前线程所执行的字节码的**行号指示器**。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 在线程创建时创建。执行本地 ...
分类:
编程语言 时间:
2017-04-25 13:36:06
阅读次数:
1362
1、Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 程序计数器:一块较小内存区域,指向当前所执行的字节码。如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是Native方法,这个计算器值为空。 ...
分类:
编程语言 时间:
2017-04-04 12:39:40
阅读次数:
282
一:互斥同步 使用互斥来实现线程间的同步,保证共享数据在同一时刻只被一个线程使用。Java中最基本的互斥手段就是syncrhoized关键字。 syncrhoized的底层原理与操作系统中的信号量的使用类似:编译后,syncrhoized变成两个字节码指令monitorenter和monitorex ...
分类:
编程语言 时间:
2017-03-12 14:51:52
阅读次数:
135
JVM的基本结构 包括四部分:类加载器、执行引擎、内存区(运行时数据区)、本地方法接口 类加载器:jvm启动时或类运行时将需要的class文件加载到JVM中。 JVM内存申请过程如下: 执行引擎:负责执行class文件中包含的字节码指令。 内存区: 在jvm运行的时候操作所分配的内存区。内存可分为五 ...
分类:
其他好文 时间:
2017-03-12 01:02:55
阅读次数:
271
在看java虚拟机字节码执行引擎的时候,里面提到了java虚拟机里调用方法的字节码指令有5种: 前4种很容易理解,但是第5种笔者本人从这段描述上无法理解这个invokedynamic到底是什么东西,于是决定从实践入手来剖析一下。 invokedynamic本身是字节码命令,我们想直接调用这个命令只能 ...
分类:
编程语言 时间:
2017-01-23 17:24:21
阅读次数:
169
3.2 栈帧组成之操作数栈 操作数栈是栈帧的主要内容之一,它主要用于保存计算过程中的中间结果,同时作为计算过程中变量临时的存储空间。 操作数栈也是一个先进后出的数据结构,只支持入栈和出栈两种操作,许多java字节码指令都需要通过操作数栈进行参数传递。比如add指令,它就会在操作数栈中弹出两个整数并进 ...
分类:
其他好文 时间:
2016-12-19 00:03:42
阅读次数:
247
1.请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识。 代码执行时不发生异常。 jvm在处理浮点数时,生成的是ddiv字节码指令,i/0,0转化为浮点数0.0,而0.0是double类型的,并不精确,所以不会抛出异常。 jvm在处理 ...
分类:
编程语言 时间:
2016-11-25 23:52:11
阅读次数:
235
1.Aboutexception程序 代码: 运行结果: 修改后(删除出现错误的语句) Finally必定运行。 2.若将1中int类型改为double,输出结果为infinity而非异常,因为javac在编译时将int语句生成为idiv字节码指令,而double则生成ddiv字节码指令,JVM在具 ...
分类:
编程语言 时间:
2016-11-24 21:43:49
阅读次数:
197
1.概述 Java虚拟机的数据类型可分为两大类:原始类型(Primitive Types,也称为基本类型)和引用类型(Reference Types)。Java虚拟机用不同的字节码指令来操作不同的数据类型 。 2.原始类型 原始类型是最基本的元素,用于构成复杂的引用类型。与世间万物一样,都是由最基本 ...
分类:
其他好文 时间:
2016-11-24 21:38:31
阅读次数:
199