在Java程序中显式抛出异常的操作(throw语句)都由athrow指令来实现,除了用throw语句显式抛出异常情况之外,Java虚拟机规范还规定了许多运行时异常会在其他Java虚拟机指令检测到异常状况时自动抛出。例如,在前面介绍的整数运算中,当除数为零时,虚拟机会在idiv或ldiv指令中抛出Ar... ...
分类:
其他好文 时间:
2018-09-22 23:20:06
阅读次数:
256
Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变 ...
分类:
编程语言 时间:
2018-09-02 18:38:42
阅读次数:
223
1.java内存模型 1.JVM内存模型 JVM内存模型如上图,需要声明一点,这是《Java虚拟机规范(Java SE 7版)》规定的内容,实际区域由各JVM自己实现,所以可能略有不同。以下对各区域进行简短说明。 1.1程序计数器 程序计数器是众多编程语言都共有的一部分,作用是标示下一条需要执行的指 ...
分类:
编程语言 时间:
2018-08-14 18:48:49
阅读次数:
210
很多人认为方法区(或者hotSpot虚拟机中的永久代)是没有垃圾收集的,java虚拟机规范中确实说过不要求虚拟机在方法区实现垃圾收集,而且在方法区中进行垃圾收集的“性价比”一般比较低:在堆中,尤其是新生代中,常规应用进行一次垃圾收集一般可以回收70% ~ 95%的空间,而永久代的垃圾收集效率远低于此 ...
分类:
其他好文 时间:
2018-08-10 16:02:44
阅读次数:
887
一.前言 物理机的执行引擎是直接在物理硬件如CPU、操作系统、指令集上运行的,但是对于虚拟机来讲,他的执行引擎由自己实现。 执行引擎有统一的外观(Java虚拟机规范),不同类型的虚拟机都遵循了这一规范,输入字节码文件,解析字节码处理,然后输出结果。 二.运行时栈帧结构 1、栈帧概念栈帧(Stack ...
分类:
编程语言 时间:
2018-08-06 14:31:35
阅读次数:
198
垃圾收集器 HotSpot虚拟机的垃圾收集器 Java虚拟机规范中对垃圾收集器如何实现没有任何规定,因此不同版本的虚拟机所提供的垃圾收集器都可能有很大的差别,并且都会提供参数供用户自己应用的特点和要求组合出各个年代使用的收集器。java 1.7之后的Hotspot虚拟机包含的收集器如下: 新生代收集 ...
分类:
编程语言 时间:
2018-08-05 15:54:54
阅读次数:
125
基本数据类型的加载和存储 极客时间深入理解Java虚拟机读后感,有错误还请指正 虚拟机中的Boolean类型 在Java语言规范中,boolean类型的值只有两种可能,那就是"true"和"false". 但是这两个符号是不能被Java虚拟机直接使用的. 在Java虚拟机规范中,boolean类型则 ...
分类:
编程语言 时间:
2018-08-04 11:55:41
阅读次数:
165
Java 内存结构 简介 运行时数据区域 java虚拟机在运行时将内存划分为若干个不同的数据区域,这些区域有不同的用途,以及创建和销毁的时间,根据java虚拟机规范的规定,java虚拟机所管理的内存分为以下几个区域。线程共享有: 方法区和堆 ,线程私有的有程序计数器、虚拟机栈(平时说的栈)和本地方法 ...
分类:
编程语言 时间:
2018-07-29 21:12:27
阅读次数:
165
什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此, ...
分类:
编程语言 时间:
2018-07-07 17:39:52
阅读次数:
149
前面几篇文章中, 系统的学习了下JVM内存结构、Java内存模型、Java对象模型, 但是发现自己还是对这三者的概念和区别比较模糊, 傻傻分不清楚。所以就有了这篇文章, 本文主要是对这三个技术点再做一个总结和区分, 加深印象。 JVM内存结构 在《Java虚拟机规范(Java SE 8)》中描述了J ...
分类:
编程语言 时间:
2018-07-03 00:17:09
阅读次数:
178