【java虚拟机的类加载机制】教程文章相关的互联网学习教程文章

深入理解Java虚拟机(二)——类加载器深入解析【图】

类加载过程 ?类加载:类加载器将class文件加载到虚拟机的内存 ?加载:在硬盘上查找并通过IO读入字节码文件 ?连接:执行校验、准备、解析(可选)步骤 ?校验:校验字节码文件的正确性 ?准备:给类的静态变量分配内存,并赋予默认值 ?解析:类装载器装入类所引用的其他所有类 ?初始化:对类的静态变量初始化为指定的值,执行静态代码块类加载器种类 ?启动类加载器:负责加载JRE的核心类库,如jre目标下的rt.jar,charsets.jar等 ?扩展...

Java虚拟机——运行时数据区域

java虚拟机章执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途。 1、程序计数器(线程私有 程序计数器是一块较小的 内存区域,它可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理等基础功能都需要依赖这个计数器来完成。 因为处理器在一个确定是时刻只会执行一个线程中的指令...

记录java虚拟机性能监控工具(jps与jstat)的使用

(1) jps(Java Virtual Machine Process Status) 虚拟机进程状况工具;1.1 显示运行的Java应该程序的进程IDjps -q#86589#775671.2 显示运行的Java应该程序的进程ID及类名jps #86533 Jps#77567 Bootstrap1.3 显示运行的Java应该程序的进程ID及类全名jps -l#86701 sun.tools.jps.Jps#77567 org.apache.catalina.startup.Bootstrap1.4 显示运行的Java应该程序的进程ID及类名还有给这个类转的参数jps -m#86645 Jps -m#77567 Bootstrap st...

探究Java虚拟机栈【图】

前言 Java 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及程序计数器这一小部分内存。今天我就 Java 虚拟机栈做一些比较浅的探究。 熟悉 Java 的同学应该都知道了,JVM 是基于栈的。但是这个“栈” 具体指的是什么?难道就是虚拟机栈?想要回答这个问题我们先要从虚拟机栈的结构谈起。 虚拟机栈 何为虚拟机栈虚拟机栈的栈元素是栈帧,当有一个方法...

《深入理解 Java 虚拟机》笔记

第一章 Java 内存区域与内存溢出溢出 程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 每条线程都有独立的程序计数器,各条线程之间计数器互不影响,独立存储。 Java 虚拟机栈 Java 虚拟机栈也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是 Java 方法执行的内存模型:每个方法在执行的同...

从Java虚拟机角度分析类的实例化顺序【代码】

1.首先展示一下实例代码(Son.java & Father.java)public class Father {public static int a=10;//父类的静态变量static{//父类的静态代码块a=20;}{//父类的构造代码块a=30;}public Father() {//父类的构造方法a=40;} }public class Son extends Father{public static int s=10;//子类的静态变量public int k=20;//子类的实例变量static{//子类的静态代码块s=20;}{//子类的构造代码块s=30;}public Son() {//子类的构造函数s=40;}...

为什么我们要学习Java虚拟机?

了解Java虚拟机有如下好处: 1.首先,Java虚拟机提供了许多配置参数,用于满足不同应用场景下,对程序性能的需求。学习Java虚拟机,可以针对自己的应用,最优化匹配运行参数; 2.其次,java虚拟机本身是一种工程产品,在实现过程中自然存在不少局限性。学习Java虚拟机,可以更好地规避它在使用中的Bug,也可以更快地识别出Java虚拟机中的错误; 3.再次,Java虚拟机拥有当前最前沿,最成熟的垃圾回收算法实现,以及即时编译器实现。...

Java虚拟机的平台无关性与语言无关性【图】

平台无关性 不同平台的不同java虚拟机,都执行同一种字节码文件,即Class文件 语言无关性 Java虚拟机不止能执行java程序,还有Clojure、Groovy、JRuby、Jython、Scala等 它不与某种语言绑定,而是和Class文件,这种二进制文件绑定。

Java虚拟机-3.Class文件中的常量池详解【代码】【图】

NO1.常量池在class文件的什么位置? 我的上一篇文章《Java虚拟机原理图解》 1、class文件基本组织结构中已经提到了class的文件结构,在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置: 知道了常量池的位置后,然后让我们来揭秘常量池里究竟有什么东西吧~ NO2.常量池的里面是怎么组织的? 常量池的组织很简单,前端的两个字节占有的位置叫做常量池计...

java虚拟机(JVM)

1.jvm虚拟机概述和基本概念 (虚拟机分为系统虚拟机-》(VirtualBox VMware ==) 和 程序虚拟机-》(JVM DVM == ) ) 1.1什么是jvm    JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机。 JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候JVM的作用就体现出来了,它负责把我们的程序翻译给系统“听”,告诉它我们的程序需要做什...

【深入理解 Java 虚拟机笔记】虚拟机性能监控与故障处理工具【图】

3.虚拟机性能监控与故障处理工具 定位问题时,知识和经验是关键基础、数据(运行日志、异常堆栈、GC日志、线程快照、堆转储快照)是依据、工具是运用知识处理数据的手段。 思维导图JDK的命令行工具jps: 虚拟机进程状况工具 jps(JVM Process Status Tool):可以列出正在运行的虚拟机进程,并显示虚拟机执行的主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一 ID(Local Virtual Machine Identity,LVMID)...

「深入Java虚拟机(6)」:Java语法糖

语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java中最常用的语法糖主要有泛型、变长参数、条件编译、自动拆装箱、内部类等。虚拟机并不支持这些语法,它们在编译阶段就被还原回了简单的基础语法结构,这个过程成为解语法糖。 泛型是JDK1.5之后引入的一项新特性,Java语言在还没有出现泛型...

探究Java虚拟机栈【图】

前言 Java 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及程序计数器这一小部分内存。今天我就 Java 虚拟机栈做一些比较浅的探究。 熟悉 Java 的同学应该都知道了,JVM 是基于栈的。但是这个“栈” 具体指的是什么?难道就是虚拟机栈?想要回答这个问题我们先要从虚拟机栈的结构谈起。 虚拟机栈 何为虚拟机栈虚拟机栈的栈元素是栈帧,当有一个方法...

「深入Java虚拟机(4)」:类加载机制

类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里...

加载 - 相关标签