![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
Richard331
这个作者很懒,什么都没留下…
展开
-
JVM——字节码指令
字节码简介 Java虚拟机的指令由一个字节长度、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的架构,所以大多数指令都不包含操作数,只要有一个操作码。 字节码=操作码+操作数(非必须) 字节码指令集是一种具有鲜明特点、优劣势都很吐出的指令集合架构,由于限制了Jav...原创 2019-04-26 21:57:09 · 226 阅读 · 0 评论 -
类加载器
概述 Class文件以何种格式存储,类型合适加载、如何连接,以及虚拟机直接控制的行为,用户程序无法对其他进行改变。能通过程序进行操作的,主要是字节码生成与类加载器这两部分的功能。 Tomcat:正统的类加载器架构 部署到同一个服务器上的两个Web应用程序所使用的Java类库可以实现相互隔离。这是最基本的需求,两个不同的应用程序可能会依赖同一个第三方类库的不同版本。 部署到同一个服务器上的两个We...原创 2019-04-30 16:17:16 · 133 阅读 · 0 评论 -
JVM——JDK可视化工具
JDK可视化工具 JDK中除了提供大量的命令行工具外,还有两个功能强大的可视化工具:JConsle和VisualVM,这个两个工具是JDK的正式成员。 JConsole: Java监视合格管理控制台 JConsole(Java Monitoring and Management Console)是一种基于JMX的可视化监视、管理工具。它的管理部分的功能是针对JMX MBean进行管理,由于MBe...原创 2019-04-25 15:29:17 · 1748 阅读 · 0 评论 -
JVM学习——虚拟机性能监控与故障处理工具
定位一个系统的出现的问题,知识、经验是关键基础,数据是一句,工作是运用知识处理数据的手段。数据包括:运行日志、异常对战、GC日志、线程快照、堆转存储快照等等。经常使用适当的虚拟机监控和分析的工具可以加快我们分析数据、定位解决问题的速度。 JDK的命令行工具 在JDK的bin目录中有命令行工具: 这些主要用于监控虚拟机和故障处理的工具,文件大小普遍不大,是因为这些命令行工具大多数是jdk/lib/t...原创 2019-04-25 14:32:35 · 1006 阅读 · 0 评论 -
JVM——多线程理解
Java内存模型 Java内存模型的主要主要、目标是定义程序中各个变量的访问规则,即在虚拟机中将变量储存到内存和从内存中取出变量这样的底层细节。 Java内存模型规定了所有变量都存储在主内存中(此处的主内存与介绍物理硬件时的主内存名字一样,两者也可以相互类比,但此处是虚拟机内存的一部分)。 每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量所有操作...原创 2019-05-05 16:20:52 · 186 阅读 · 0 评论 -
JVM——方法调用
概念 方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不设计方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作,Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相对于之前说的直接引用)。这个特性给Java带来了更强大的动...原创 2019-04-29 17:38:42 · 154 阅读 · 0 评论 -
JVM——虚拟机字节码执行引擎
概述 执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是相对于一个“物理机”的概念,这两种都有代码执行能力,其区别是物理机的执行是直接建立在处理器、硬件、指令和操作系统层面的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。 不同虚拟机的实现里面,执行引擎在执行Java代码的时候可能会有解释执行(通过解释器执行...原创 2019-04-29 10:57:13 · 130 阅读 · 0 评论 -
JVM中的安全点
什么是安全点? 在 JVM 中如何判断对象可以被回收 一文中,我们知道 HotSpot 虚拟机采取的是可达性分析算法。即通过 GC Roots 枚举判定待回收的对象。 那么,首先要找到哪些是 GC Roots。 有两种查找 GC Roots 的方法: 一种是遍历方法区和栈区查找(保守式 GC)。 一种是通过 OopMap 数据结构来记录 GC Roots 的位置(准确式 GC)。 很明显,保守式 ...转载 2019-04-24 15:36:57 · 2258 阅读 · 1 评论 -
JVM的GC
垃圾收集(Garbage Collection, GC) 虚拟机中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出有条不紊地执行着出栈和入栈操作。-----------(这几个区域的内存分配和回收都具备确定性,在这个几个区域内就不需要过多考虑回收的问题,因为方法结束或线程结束,内存自然就跟随着回收了) Java堆和方法区则不一样,一个接口中多个实现类需...原创 2019-04-24 10:57:56 · 103 阅读 · 0 评论 -
JVM的对象
对象创建的几种方法 这部分的内容回头再补充 使用new关键字创建: Object object = new Object(); Class类下的newInstance()方法: Object objet = Class.class.newInstance(); Constructor类下的newInstance()方法 对象的内存分配 将Java堆的内存空间看成两部分,一部分是使用...原创 2019-04-23 23:21:22 · 123 阅读 · 0 评论 -
JVM学习历程---(虚拟机结构图)
程序计数器(Program Counter Register) 较小的内存空间,看做当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就说通过改变这个计数器的值来取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。 线程独立拥有,相互不影响。 执行Java方法时,记录的是正在执行的虚拟机字节码指令地址 执行Native ...原创 2019-04-23 17:38:28 · 318 阅读 · 0 评论 -
JVM——虚拟机类加载机制
概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 在Java语言里面,类型的加载、连接和初始化过程都是程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实...原创 2019-04-27 21:39:15 · 142 阅读 · 0 评论 -
JVM——类文件结构
Java诞生之初的口号:“一次编写,到处运行(Write Once, Run Anywhere)”。 各个平台的虚拟机与所有平台都同意使用的程序存储格式——字节码(ByteCode)是构成平台无关性的基石。实现语言无关性的基础人生是虚拟机和字节码存储格式。Java虚拟机不和包括Java在内的如何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指...原创 2019-04-25 17:36:26 · 1036 阅读 · 0 评论