---------【Java虚拟机】
皮皮的雅客
这个作者很懒,什么都没留下…
展开
-
类加载器ClassLoader
一直想搞清楚类加载器是什么东西,终于有机会好好研究一下。 类加载器是什么? 定义:将“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到JVM外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个代码模块的类就是类加载器——ClassLoader。其实说的通俗一点就是将Class加载到JVM中去。 ClassLoader结构 ClassLoade...原创 2018-09-15 18:46:09 · 347 阅读 · 0 评论 -
类的加载流程
通过类加载器ClassLoader的介绍我们知道了class是由类加载器加载的,了解了类加载器的基本原理,现在记录一下类的加载流程,探索一个类是如何被加载进入JVM内存中的。 类加载机制 定义: 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 在Java语言中,类型的加载,连接和初始化过程都是...原创 2018-09-15 18:47:43 · 141 阅读 · 0 评论 -
javac编译原理
每个人在学习Java的时候都配置过环境变量,检查是否配置成功的时候,我们总会在命令行敲入两个命令,一个是 java,一个是 javac。刚开始我们都不知道这两个命令代表的含义,随着学习的深入,我们知道了 java 命令就是检查是否找得到运行环境,而 javac 就是编译Java源代码的编译器。现在,深入探索一下 javac 这个神奇的编译器,看看它的背后到底是什么。 javac的...原创 2018-09-16 15:26:23 · 291 阅读 · 0 评论 -
类文件结构
文章目录Java语言的无关性Class类文件结构魔数与Class文件版本常量池访问标志三大索引——类索引,父类索引,接口索引集合字段表集合方法表集合属性表集合1. Code属性2. ConstantValue参考 Java语言的无关性 从事Java语言开发工作的人都知道,Java语言有一个非常著名的宣传口号就是——一次编写,到处运行。那到底是怎么做到“一次编写,到处运行”的呢? 其实,我们知...原创 2018-09-23 22:45:35 · 160 阅读 · 0 评论 -
字节码指令
熟悉并掌握字节码指令,懂得阅读字节码文件是Java程序员一项基本技能,本文就罗列一下基本的字节码指令。 加载和存储指令 加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输: 将一个局部变量加载到操作数栈: iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload_ 将一个数值从操作数栈存储到局部变量表: is...原创 2018-09-24 11:54:43 · 224 阅读 · 0 评论 -
垃圾收集器与回收算法
文章目录运行时数据区PC寄存器Java虚拟机栈(Java方法栈)本地方法栈Java堆方法区运行时常量池对象是如何诞生的?垃圾收集策略对象存活判定算法判定对象是否可回收的算法(一)——引用计数算法判定对象是否可回收的算法(二)——可达性分析算法方法区回收策略判断对象是否死亡1. 第一次标记2. 第二次标记垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法HotSpot算法实现可达性分析问...原创 2018-10-03 20:49:18 · 843 阅读 · 0 评论 -
虚拟机执行字节码
在 javac编译原理中我们了解了Java源码被javac编译器编译成能被JVM装载的Java字节码的过程。在类文件结构中我们知道了Java程序如何存储于字节码文件中(Class文件),了解了Class文件的基本结构,掌握了阅读字节码的基本工具(javap)和如何去阅读字节码。在类的加载流程和类加载器ClassLoader中我们了解了JVM如何加载Class文件。现在,我们将去探讨JVM引擎如...原创 2018-09-30 17:03:25 · 295 阅读 · 0 评论