Java虚拟机(JVM)
ageofnodoubt
https://crayonai.net/
展开
-
深入理解Java虚拟机读书笔记之:第1章 Java体系结构介绍
几年前买了《深入Java虚拟机(原书第2版)》一书,由于当时能力有限只看了前几章,最近又重新拿出来细细研读。 Java体系结构包括四个独立但相关的技术:Java程序设计语言;Java class文件格式;Java应用编程接口(API);Java虚拟机。 Java虚拟机和Java API一起组成了一个“平台”,所有Java程序都在这上面...2013-04-04 01:09:46 · 144 阅读 · 0 评论 -
JVM指令分析实例四(数组、switch)
本篇为《JVM指令分析实例》的第四篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)数组一维原始类型数组void createBuffer() { int buffe...2018-10-07 23:33:15 · 198 阅读 · 0 评论 -
JVM指令分析实例二(算术运算、常量池、控制结构)
相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。算术运算Java虚拟机通常基于操作数栈进行算术运算。只有iinc指令例外,它直接对局部变量进行自增操作。实例代码int align2agrain(int i, int grain) { return ((i + grain - 1) & ~(grain - 1));}字节码指令...2018-09-23 17:19:34 · 487 阅读 · 0 评论 -
JVM指令分析实例一(常量、局部变量、for循环)
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码以及跟随其后的零至多个代表此操作所需参数的操作数所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。Java虚拟机限制操作码的长度为1个字节,因此最多只能有256个指令。指令格式以下指令格式,是基于Oracle JDK编译后,通过javap工具生成的指令描述格式。<index> <opco...2018-09-16 01:02:42 · 590 阅读 · 0 评论 -
Java Class文件结构实例分析(下)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(下) 本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:Java Class文件结构实例分析(上)Class文件格式信息继续上节实例代码package chapter6;public class TestClass { ...2018-09-07 22:50:47 · 222 阅读 · 0 评论 -
Java Class文件结构实例分析(上)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(上) 本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。Class文件格式信息实例代码package chapter6;public class TestClass { private int m; ...2018-09-07 22:39:35 · 185 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记之:第7章 类型的生命周期
类型装载、连接与初始化 Java虚拟机通过装载、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。其中,装载就是把二进制形式的Java类型读入Java虚拟机中;而连接就是把这种已经读入虚拟机的二进制形式的类型数据合并到虚拟机的运行时状态中去。连接阶段分为三个子步骤——验证、准备和解析。“验证”步骤确保了Java类型数据格式正确并且适于Java虚拟机使用。而“准...2013-05-27 23:41:19 · 170 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记之:第6章 Java class文件
Java class文件是对Java程序二进制文件格式的精确定义。每一个Java class文件都对一个Java类或者Java接口作出了全面描述。一个class文件中只能包含一个类或者接口。 尽管class文件与Java语言结构相关,但它并不一定必须与Java语言相关。如下图,可以使用其他语言来编写程序,然后将其编译为class文件,或者把Java程序编译为另一种不同的二进制文...2013-04-30 17:19:10 · 187 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记之:第5章 Java虚拟机
Java虚拟机之所以被称之为是“虚拟”的,就是因为它仅仅是由一个规范来定义的抽象计算机。因此,要运行某个Java程序,首先需要一个符合该规范的具体实现。 Java虚拟机是什么 要理解Java虚拟机,你首先必须意识到,当你说“Java虚拟机”时,可能指的是如下三种不同的东西: 1)抽象规范 2)一个具体的实现 3)一个运行中的虚拟机实例...2013-04-23 22:50:59 · 396 阅读 · 1 评论 -
深入理解Java虚拟机读书笔记之:第3章 安全(3)
策略 Java安全体系结构的真正好处在于,它可以对代码授予不同层次的信任度来部分地访问系统。 Microsoft提供了ActiveX控件认证技术,它和Java的认证技术相类似,但是ActiveX控件并不在沙箱中运行。这样,使用了ActiveX,一系列移动代码要么是被完全信任的,要么是完全不被信任的。 版本1.2的安全体系结构的主要目标之一就是使建立(以签名代码为基...2013-04-06 20:36:14 · 321 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记之:第3章 安全(2)
代码签名和认证 Java安全模型很重要的一点就是它能支持认证。认证可以使用户确认,由某些团体担保的一些class文件是值得信任的,并且这些class文件在到达用户虚拟机的途中没有被改变。 要对一段代码作担保或者签名,必须首先生成一个公钥/私钥对。用户应该保管那把私钥而把公钥公开。至少,应该把公钥给那些要在你的签名上建立安全策略的人。一旦拥有了一个公钥/私钥对,就...2013-04-05 14:55:21 · 133 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记之:第3章 安全(1)
为了解决由网络引起的安全问题,Java体系结构采用了一个扩展的内置安全模型,这个模型随着Java平台的主要版本而不断发展。 为什么需要安全性 Java的安全模型是其多个重要结构特点之一,它使Java成为适于网络环境的技术。因为网络提供了一条攻击连入的计算机的潜在途径 ,因此安全性是非常重要的。 Java安全模型侧重于保护终端用户免受从网络下载的、来自不可靠来...2013-04-05 00:28:54 · 268 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记之:第2章 平台无关
为什么要平台无关 Java技术在网络环境下非常有用,其中一个关键的理由就是,用Java创建的可执行二进制程序,能够不加改变地运行于多个平台。这一点在网络化环境中尤为重要,因为大多数网络通常都是由各种各样不同种类的计算机和设备互联而成。 此外,新兴的网络化嵌入式设备则展示了Java又一擅长的领域,因为它的平台无关性在这种环境下非常有用。在这个嵌入式的世界,Java的平台无关性...2013-04-04 01:17:48 · 171 阅读 · 0 评论 -
JVM指令分析实例五(操作数栈)
本篇为《JVM指令分析实例》的第五篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)JVM指令分析实例四(数组、switch)预备知识局部变量表的变量槽(Variable Sl...2018-10-14 23:29:05 · 912 阅读 · 0 评论