SF
我所知道系列:JVM
我所知道系列:JVM
注册登录
关注博客
注册登录
主页
关于
RSS
我所知道JVM虚拟机之字节码指令集与解析七(控制转移指令)
28640
2021-04-29
阅读 6 分钟
2k
一、控制转移指令概述程序流程离不开条件控制,为了支持条件跳转,虚拟机提供了大量字节码指令,大体上可以分为比较指令、条件跳转指令、比较条件跳转指令、多条件分支跳转指令、无条件跳转指令等。前面我们也提到过有比较指令,指的是比较两个栈顶元素的大小,并将比较结果入栈比较指令有: dcmpg,dcmpl、fcmpg、fcmpl、...
我所知道JVM虚拟机之字节码指令集与解析六(操作数栈管理指令)
28640
2021-04-27
阅读 3 分钟
4.2k
将复制栈顶的一个或两个数值,并将复制值或双份的复制值重新压入栈顶,采用dup、dup2、dup_x1、dup2_x1、dup_x2、dup2_x2指令
我所知道JVM虚拟机之字节码指令集与解析五(方法调用指令与方法返回指令)
28640
2021-04-27
阅读 4 分钟
3.1k
invokevirtual、invokeinterface、invokespecial、invokestatic、invokedynamic
我所知道JVM虚拟机之字节码指令集与解析四(对象创建与访问指令)
28640
2021-04-23
阅读 5 分钟
1.7k
Java是面向对象的程序设计语言,虚拟机平台从字节码层面就对面向对象做了深层次的支持。有一系列指令专门用于对象操作,可进一步细分为创建指令、字段访问批令、数组操作指令、类型检查指令
我所知道JVM虚拟机之字节码指令集与解析三(类型转换指令)
28640
2021-04-21
阅读 3 分钟
1.4k
前言本篇文章继续学习字节码指令集中的类型转换指令,看看具体指令是怎么操作数据类型转换?一、类型转换指令的概述类型转换指令可以将两种不同的数值类型进行相互转换这些转换操作一般用于实现用户代码中的显式类型转换操作,或者用来处理字节码指令集中数据类型相关指令无法与数据类型一一对应的问题。主要有以下两种...
我所知道JVM虚拟机之字节码指令集与解析二(算数指令)
28640
2021-04-19
阅读 6 分钟
1.4k
前言前篇文章讲解了局部变量压栈指令、常量入栈指令以及出栈装入局部变量表指令,那么本篇文章接着讲解算数指令,让我们开始吧一、算数指令概述作用================================算术指令用于对两个操作数栈上的值进行某种特定运算,并把结果重新压入操作数栈分类================================大体上算术指令可...
我所知道JVM虚拟机之字节码指令集与解析一(局部变量压栈、常量变量压栈、出栈局部变量表指令)
28640
2021-04-17
阅读 9 分钟
2.7k
前言前面我们讲解了Class文件的结构、以及采用不同的方式来解读Class文件第一种是采用字节码一行一行的解读、第二种是采用javap的指令进行解读、第三使用第三方(idea、Eclipse)插件进解读、但是针对于Class文件里方法的字节码指令,我们并没有进行细节的指令分析本篇文章,我们开始对字节码指令进行分析,看看示例代码...
我所知道JVM虚拟机之Class文件结构三(JAVAP指令)
28640
2021-04-15
阅读 5 分钟
2.6k
解析CLass文件解析字节码的作用================================通过反编译生成的字节码文件,我们可以深入的了解java代码的工作机制。但是自己分析类文件结构太麻烦了!除了使用第三方的jclasslib工具之外,oracle官方也提供了工具: javap。javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前...
我所知道JVM虚拟机之Class文件结构二(解读字节码)
28640
2021-04-14
阅读 22 分钟
1.6k
解读字节码之旅接下来我们采用一个示例代码,编译成字节码文件进行解读解读 {代码...} 我们将当前Demo类编译成字节码文件,并且使用notepad++和对应的插件打开翻译翻译,如下图接下来我们把这些信息复制粘贴到一个text文档中,并在空格上进行,切割转为csv的格式由于一些csv的特性,我们在新建到一个excel文档中,并将20...
我所知道JVM虚拟机之Class文件结构一(描述介绍)
28640
2021-04-13
阅读 7 分钟
2.1k
前面众多文章有关讲解的都是些JVM的内存与垃圾回收器相关信息,那么对于本篇开始我们将把目光转移到Class文件与加载器身上去,去看看字节码文件里到底有些什么信息?是怎么加载到我们内存里?
我所知道JVM虚拟机之垃圾回收器详细篇
28640
2021-04-10
阅读 26 分钟
2.4k
前言上篇文章对垃圾回收器进行了概述讲解,那么本篇开始将具体了解垃圾回收器一、GC的分类和性能指标垃圾回收器概述我们说垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本我们从不同角度分析垃圾收集器,可以将G...
我所知道JVM虚拟机之垃圾回收相关概念的概述
28640
2021-03-26
阅读 18 分钟
1.4k
在默认情况下通过System.gc()者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存
我所知道JVM虚拟机之垃圾回收相关算法
28640
2021-03-22
阅读 16 分钟
1.4k
前言上篇我们讲的是垃圾回收的概述,那么从本篇开始我们说的是垃圾回收的相关算法这些算法我们并不会手动的实现,但我们需要知道原理是什么,背景是什么,应用场景有什么我们没有必要底层去实现,并且本身算法也是很复杂要考虑的细节有很多我们一提到垃圾回收的算法GC,那么其实翻译成两个词:垃圾回收器、垃圾回收那么...
我所知道JVM虚拟机之垃圾回收概述
28640
2021-03-18
阅读 3 分钟
1.2k
前言从本篇开始,我们正式开始接触JVM的垃圾回收相关知识,本篇文章先进行概述与介绍一、回顾JVM的几个部分我们希望通过学习JVM达到的目的是让系统在业务越来越复杂的情况下使性能更加的优化效率高所以我们一般要将上层代码进行优化、底层在系统层面优化那么当我们进行JVM虚拟机优化的时候,就需要对性能进行监控在性能...
我所知道JVM虚拟机之String Table(字符串常量池)
28640
2021-03-17
阅读 18 分钟
2.1k
前言我们在实际开发当中使用String非常的广泛,那么对使用String类其实有很多角度可以去学习理解那么本篇文章,我们从使用String的层次到开始了解分析String的实现、性能等等一、String的基本特性对于String我们称为字符串,使用一对 “” 引号起来表示那么平常我们的使用有不同的定义方式如下:String s1 = "xiaomingtong...
我所知道JVM虚拟机之执行引擎
28640
2021-03-15
阅读 10 分钟
1.7k
其实“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式
我所知道JVM虚拟机之对象的实例化与访问定位
28640
2021-03-14
阅读 4 分钟
1.6k
前言本篇补充的对象的实例化的创建方式、创建步骤等等详细说明暂且可以看看一些大厂面试前的引入面试题 美团:对象在JVM中是怎么存储的?对象头信息里面有哪些东西?蚂蚁金服:二面:java对象头里有什么一、对象的实例化接下来我们就从对象的创建方式开始说起,常见的创建方式、步骤到底有哪些并且是个什么东西我们对创...
我所知道JVM虚拟机之运行时数据区的方法区
28640
2021-03-12
阅读 16 分钟
2k
前言从本篇开始我们就要进入运行时数据区的方法区学习一、栈、堆、方法区的交互关系那么接下来我们从线程共享与否的角度来看运行时数据区看看是怎么样的?下面就是看看栈、堆、方法区的交互关系是怎么样的?从简单的代码角度出发,当前声明的变量对象是person,类型则是Person类。针对于这个类型我们需要将它加载到方法...
我所知道JVM虚拟机之运行时数据区的堆空间
28640
2021-03-10
阅读 21 分钟
1.4k
《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在运行时分配在堆上。(The heap is the run-time data area from which memory for all class instances and arrays is allocated)
我所知道JVM虚拟机之运行时数据区的本地方法栈
28640
2021-03-08
阅读 3 分钟
1.3k
前言上篇文章介绍了运行时数据区的PC寄存器、虚拟机栈,这篇讲的本地方法栈一、本地方法在讲解运行时数据区里的本地方法栈时,先穿插一个内容讲解本地方法库(红色框框)什么是本地方法?================================简单地讲:一个Native Method就 是一个Java调用非Java代码的接口。该方法的实现由非Java语言实现...
我所知道JVM虚拟机之运行时数据区的虚拟机栈
28640
2021-03-08
阅读 21 分钟
1.8k
因为跨平台性所以不能设计为基于寄存器的(设计成基于寄存器的,耦合度高,性能会有所提升,因为可以对具体的CPU架构进行优化,但是跨平台性大大降低
我所知道JVM虚拟机之运行时数据区的概述与程序计数器(PC寄存器)
28640
2021-03-06
阅读 5 分钟
1.4k
前言本篇开始学习运行时数据区,上篇文章对类加载子系统做了讲解,后续重点展开观看字节码指令去了解现在我们知道类加载器里面有什么,做了什么事情就可以其实当我们类加载器把类存放到内存当中方法区实际上已经开始使用运行时数据区了,接下来就需要对讲讲运行时数据区进行讲解了一、运行时数据区概述前面我们说过我们...
我所知道JVM虚拟机之类加载子系统(内存结构、类加载器与类加载过程)
28640
2021-03-04
阅读 15 分钟
1.7k
前言从本篇文章开始进入JVM的学习,前面我们介绍了JAVA、JVM等等这篇文章我们从类加载子系统开始进入学习一、内存结构概述请先看以下的简图,class Files我们称为字节码,从字节码开始后续操作都需要JVM负责第一步:我们要将Class文件加载到内存当中,而类加载需要用到类加载子系统Class Loader来进行加载同时对应到我们...
我所知道JVM虚拟机之聊聊JVM虚拟机
28640
2021-03-03
阅读 6 分钟
1.8k
也就是说Java虚拟机拥有语言无关性,并不会单纯地与Java语言“终身绑定”,只要其他编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表以及其他的辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行
我所知道JVM虚拟机之聊聊Java语言
28640
2021-03-03
阅读 2 分钟
1.3k
前言前篇聊了一会JVM,本篇文章再从几个方面来聊聊Java一、TIOBE排行榜TIOBE 排行榜:[链接]这是目前语言热度的排名版,而Java这门语言还是名列前茅的而世界上没有最好的编程语言,只有最适用于具体应用场景的编程语言二、Java生态圈Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早...
我所知道JVM虚拟机之聊聊为什么学习JVM虚拟机
28640
2021-03-02
阅读 2 分钟
1.5k
前言作为Java工程师的你曾被JVM伤害过吗?你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接OOM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧然后就JJ了。每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目...