Java虚拟机扫盲
虚拟机作为字节码的运行时环境,为应用的运行提供了诸多特性:垃圾回收、文件校验等等。本专栏选取虚拟机中几个关键内容进行阐述,以期完成虚拟机内容扫盲。
我叫白小猿
这个作者很懒,什么都没留下…
展开
-
[java虚拟机]--(2)字节码文件--(7)方法表结构集合
声明:Author:赵志乾Date:2018-6-22Declaration:All Right Reserved!!!背景知识: 面向对象编程思想倡导我们将数据和方法进行捆绑封装,使得特定数据只能被特定方法访问,从而避免某些方法误操作数据,并可缩小问题点的定位范围。当然,这只是一种设计理念,需要有具体的设施来支撑该理念的落地。 在Java应用中,伴随着数据的拆分,操作数据的方法也进行...原创 2018-06-23 00:30:58 · 175 阅读 · 0 评论 -
[java虚拟机]--(2)字节码文件--(6)字段表结构集合
声明:Author:赵志乾Date:2018-6-22Declaration:All Right Reserved!!!背景知识: 面向对象编程思想倡导我们将数据和方法进行捆绑封装,使得特定数据只能被特定方法访问,从而避免某些方法误操作数据,并可缩小问题点的定位范围。当然,这只是一种设计理念,需要有具体的设施来支撑该理念的落地。 在Java应用中,其通过将数据拆分到不同的类型中,每一种...原创 2018-06-22 22:51:33 · 278 阅读 · 0 评论 -
[java虚拟机]--(2)字节码文件--(5)类级别的索引
声明:Author:赵志乾Date:2018-6-18Declaration:All Right Reserved!!!背景知识: Java代码在定义一个类时,其有且仅有一个父类和若干个接口。而在定义接口时,其可以有若干个父接口。这主要是因为Java中的类只能进行单继承,而接口作为一个纯抽象的功能协议,可以进行多重继承。 Java不允许类多重继承,主要是为了避免C++中多重继承带来的菱...原创 2018-06-18 23:25:59 · 190 阅读 · 0 评论 -
[java虚拟机]--(2)字节码文件--(4)访问标志
声明:Author:赵志乾Date:2018-6-18Declaration:All Right Reserved!!!背景知识: Java语言中,使用一些关键字来表示枚举性质的含义,如class表示类、interface表示接口、public、protected、private表示不同级别的访问权限等等。这些具有枚举性质的关键字是给开发人员看的,非常便于代码的理解。因为每个关键字都是用一个...原创 2018-06-18 22:40:23 · 193 阅读 · 0 评论 -
[java虚拟机]--(2)字节码文件--(3)常量池
声明: Author:赵志乾 Date:2018-6-18 Declaration:All Right Reserved!!!背景知识:常量池这一概念在虚拟机内存章节中也提到过(《虚拟机内存》)。虚拟机内存中的常量池位于方法区内,其全称为运行时常量池。之所以称为运行时常量池,是因为其伴随虚拟机的运行而存在,具有动态性,即随时间的推移,会有新的内容加入,也有新的内容...原创 2018-06-18 20:41:35 · 377 阅读 · 3 评论 -
[java虚拟机]--(2)字节码文件--(2)魔数与版本
声明:Author:赵志乾Date:2018-6-18Declaration:All Right Reserved!!!背景知识:1、魔数魔数是一个术语,在软件领域通常有以下两种含义:代码中出现的,没有任何解释的数字常量或字符串常量。文件起始的几个字节,用于表示文件的类型。2、魔数与扩展名 文件起始的几个字节可以用来描述文件的类型,那文件的扩展名也可以用来表示文件的类型。两者岂不是功能重叠了...原创 2018-06-18 20:08:39 · 221 阅读 · 0 评论 -
[java虚拟机]--(2)字节码文件--(1)字节码文件存在的意义
声明:Author:赵志乾Date:2018-6-18Declaration:All Right Reserved!!!背景知识: C++应用经过编译、链接等步骤,最终生成机器码文件,也称做可执行文件。这类文件其本质是一组指令的组合,如精简指令集、复杂指令集等。不同的指令集对应着不同的硬件架构实现,这也就导致机器码文件同具体的底层硬件耦合在一块。当需要将C++应用迁移到不同的平台上运行时,就...原创 2018-06-18 15:22:43 · 251 阅读 · 0 评论 -
[java虚拟机]--(1)java内存区域--(2)线程间共享区域
声明:Author:赵志乾Date:2018-6-18Declaration:All Right Reserved!!!背景知识:[java虚拟机]--(1)java内存区域--(1)线程私有区域虚拟机内存之线程间共享区域:1、堆 谈及内存区域的划分,一般会将内存区域简单的划分为堆内存和栈内存。当然,这只是一种粗粒度的划分,详细的划分见《java内存区域》。对于开发而言,堆内存相较于栈内存,...原创 2018-06-18 14:41:33 · 677 阅读 · 0 评论 -
[java虚拟机]--(1)java内存区域--(1)线程私有区域
声明:Author:赵志乾Date:2018-6-17Declaration:All Right Reserved!!!背景知识:1、jvm在启动时会拉起一些守护线程,其中包括垃圾回收线程。垃圾回收线程的意义在于实现虚拟机内存区域的自管理。 C++应用:堆内存的使用周期完全由应用本身来决定,其遵循“谁申请、谁释放,谁创建、谁销毁”的原则。 Java应用:堆内存的使用周期由应用和虚拟机共...原创 2018-06-18 00:20:56 · 1500 阅读 · 0 评论