## 双亲委派机制 - 双亲委派机制就是当类加载器需要加载某个class文件的时候,需要委派给上层加载器来加载,然后递归这个操作。最后从上层开始依次往下寻找,如果某一层加载器能够加载该类,那么就使得该加载器进行加载,只有当上层的都不能加载的时候,才允许应用程序加载器来进行加载。 - 作用有两个:1、防止重复加载同一个class,拿到一个类的时候会往上层发问一问,如果没有加载过了就不需要加载了。2、防止核心的类会被修改。...
文章目录 虚拟机和Java虚拟机简介1. 虚拟机2. Java虚拟机2.1 简介2.2 作用2.3 特点 3. 基于栈的指令集架构和基于寄存器的指令集架构3.1 基于栈式架构的特点3.2 基于寄存器架构的特点3.3 举例3.3.1 基于栈的计算流程(以Java虚拟机为例)3.3.2 基于寄存器的计算流程(以ARM指令集为例) 3.4 总结 4 HotSpot VM4.1 简介4.2 整体结构 5 JVM的生命周期5.1 虚拟机的启动5.2 虚拟机的执行5.3 虚拟机的退出 Reference虚拟机和Java虚拟机简...
文章目录 JVM参数汇总:JVM内存设置多大合适?Xmx和Xmn如何设置?一、java启动参数共分为三类:二、标准参数中比较有用的:三、非标准参数又称为扩展参数 JVM内存设置多大合适?Xmx和Xmn如何设置?四、非Stable参数五、参数使用方法六、参数汇总七、示例:JVM参数汇总:JVM内存设置多大合适?Xmx和Xmn如何设置? 一、java启动参数共分为三类: 其一是标准参数(-), 所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 其二是...
注:书中第五章-调优案例分析与实战,包含几个案例分析和eclipse调优,但是其中的例子很简单,就先不整理到笔记里了目录 一、无关性 二、Class类文件结构 2.1 魔数与class文件版本 2.2 常量池 javap 2.3 访问标记 2.4 类索引、父类索引与接口索引集合 2.5 字段表集合 2.6 方法表集合 2.7 属性表集合 2.7.1 Code 2.7.2 Exceptions 2.7.3 LineNumberTable 2.7.4 LocalVariable Table 2.7.5 InnerClass属性 2.7.6 Deprecated及Synth...
PC Register介绍JVM中的程序计数寄存器(Program Counter Register)中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器会更贴切作用:用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令它是一块很小的内存空间,几乎可以忽略不计,也是运行速度最快的存储区域在JVM规范中,每个线...
在学习 JVM 相关知识,怎么让自己有动力看下去,且有思考性呢?笔者认为,开头用一些常用的面试题,来引入读者的兴趣比较好,这样才会有看下去的动力。所以,该篇文章会以面试+总结的方式,希望读者能先思考写出答案,再查看相关知识。一、JVM常见面试题介绍下 Java 内存区域Java 对象的创建过程对象的访问定位有几种String、StringBuilder、StringBuffer 有什么不同?这是一些常见的面试,很多人都看到网上的标准答案,但你知道为...
JVM概述垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得 JVM 内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础。 JVM 内存区域的划分通常可以把 JVM 内存区域分为下面几个方面,其中,有的区域是以线程为单位,而有的区域则是整个 JVM 进程唯一的。1. 程序计数器(PC,Program Counter Register)。在 JVM 规范中,每个线程都有它自己的程序计数器,并且任何...
目录 一、Java发展史 二、Java虚拟机(部分) 2.1 Sun Classic VM 2.2 Sun Exact VM 2.3 Sun HotSpot VM 2.4 BEA JRockit VM 2.5 BEA Liquid VM 2.6 IBM J9 VM 2.7 Azul VM 2.8 Microsoft JVM 三、总结一、Java发展史 1991年4月,James Gosling博士领导绿色计划(Green Project),产品为Java语言的前身:Oak(橡树)。1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java1.0版本,第一次提出了“Write Once, Run Any...
类加载过程 最近开始学习Java虚拟机,今天学习了类加载的三个过程,遂写一篇博客作为学习笔记 类加载子系统概述 类加载子系统作为JVM的一部分,负责将硬盘中的class字节码文件加载到JVM中。类加载器只负责将类加载到JVM中,不保证程序一定可以正确执行,决定程序是否可以正常运行的是执行引擎。 类被加载后存储于方法区中。方法区中的内容除了类的相关信息之外,还包括运行时常量池、字符串字面量及数字常量等。 上图的几点说明 1...
强烈推荐阅读深入理解java虚拟机第三版,并可以反复观看 JVM JDK = JRE+开发调试诊断工具 JRE = JVM + JAVA标准库 JVM的运行时数据区1.程序计数器 程序计数器占用一块较小的内存空间。当前线程所执行字节码的指示器。就像是汇编语言中保存了执行的地址。程序计数器是线程独立的,当每个线程执行到某个位置时可能会阻塞,线程切换后能够恢复到正确的执行位置都是利用程序计数器来得到。它可以看作是当前线程所执行的字节码的行号指示...
在学习Java虚拟机时,我们了解了常见的三种垃圾收集算法: 标记-清除(Mark-Sweep)算法、标记-复制算法、标记-整理算法 但是收集算法是内存回收的方法论,而圾收集器就是内存回收的实践者,接下来我们来了解一下常见的垃圾收集器,其中CMS、G1、ZGC垃圾收集器是我们关注的重点,其他的可以一笔带过。 一、Serial收集器 Serial收集器是最基础、历史最悠久的、单线程收集器,Serial收集器在进行垃圾收集时,必须暂停其他所有工作线程...
Java虚拟机栈是线程私有的,它的生命周期与线程相同。 虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等信息。 每一个方法被调用直至执行完毕的过程, 就对应着一个栈帧在虚拟机中从入栈到出栈的过程。 (栈帧是方法运行期很重要的基础数据结构) 经常把Java内存区域笼统的划分为堆内存和栈内存 其中,栈通常指的就是虚拟机...
推荐使用小程序阅读 为了能让您更加方便的阅读 本文所有的面试题目均已整理至小程序《面试手册》 可以通过微信扫描(或长按)下图的二维码享受更好的阅读体验!目录推荐使用小程序阅读1. JVM 基础1.1 JVM 内存分哪几个区,每个区的作用是什么?方法区虚拟机栈:本地方法栈堆程序计数器1.2 对象的访问定位有几种方式?句柄访问直接指针访问1.3 JVM内存模型是什么?1.4 finalize()方法什么时候被调用?析构函数(finalization)的目的是什么...
1、先查看一下环境中是否已经安装了JDK。 输入以下命令: java -version 或者使用rpm命令: rpm -qa:查询所安装的所有rpm软件包(|管道过前一个的输出是后一个的输入) rpm -qa l more[分页显示] rpm -qa l grep X[rpm-qa l grep firefox] 举例: rpm -qal grep java------>查看是否安装过java rpm -qa I grep firefox ------>查看是否安装了火狐2、如果已经安装了jdk,那就可以直接去配置环境变量了。 3、如果是之前安装的jdk存在...