
jvm
文章平均质量分 76
jvm
无名草110
人生如逆旅 我亦是行人
展开
-
jvm之内存分区
一.JVM的基本结构各自作用1.类加载子系统:负责从文件系统或者网络中加载Class信息,加载的信息存放在一块称之为方法区的内存空间2.方法区:存放类信息、常量信息、常量池信息、包括字符串字面量和数字常量等3.java堆:在jvm启动时建立,它是java程序最主要的内存工作区域,几乎所有的对象实例都存放在堆中,堆空间是所有线程共享的4.直接内存:java的nio库允许java程序使用直接内存,从而...原创 2018-05-20 19:25:42 · 276 阅读 · 1 评论 -
jvm之字节码解读——番外篇之经典面试题:从字节码角度分析synchronized的执行过程
面试过java岗位的同学,应该会很多次遇到过这个问题:synchronized这个关键字,它的原理在字节码是怎么体现的?今天我们来分析一下首先,我们要明确,synchronized这个关键字用在方法上有2种使用方式:一是直接作为方法的修饰符,二是作为方法里synchronized块出现synchronized直接作为方法修饰符我们先看第一种情况——直接作为方法的修饰符 public synchronized void test() { }看看生成的字节码对应的助记符是怎原创 2021-03-15 14:53:27 · 414 阅读 · 0 评论 -
jvm之字节码解读——番外篇之经典面试题:e=(a+b-c)*d的执行过程
今天我们来聊一下一个经典面试题,下面这段程序,执行的过程是怎样的呢? public void test() { int a=1,b=2,c=3,d=4; int e = (a+b-c)*d; }我们先看看生成的字节码是怎样的(重点关注Code部分) public void test(); descriptor: ()V flags: ACC_PUBLIC Code: stack=2, locals=6, ar原创 2021-03-13 22:27:42 · 286 阅读 · 0 评论 -
jvm之字节码解读——字节码文件结构解析(Methods)
根据前文jvm之字节码解读——认识字节码,我们可知,java的字节码文件结构为前文已经对魔数和版本号进行了分析访问修饰符/本类/父类/成员变量作了介绍jvm之字节码解读——字节码文件结构解析(访问修饰符/本类/父类/成员变量)下面,对紧跟在版本号的字段——Methods(方法)进行分析我们先贴一下源代码和javap命令执行后的代码package com.bill;public class MyByteCodeTest1 { private int a = 1; ..原创 2021-03-12 20:05:49 · 264 阅读 · 0 评论 -
jvm之字节码解读——字节码文件结构解析(访问修饰符/本类/父类/成员变量)
根据前文jvm之字节码解读——认识字节码,我们可知,java的字节码文件结构为前文已经对常量池进行了分析jvm之字节码解读——认识字节码文件结构解析(常量池)我们先把常量池的内容贴一下Constant pool: #1 = Methodref #4.#20 // java/lang/Object."<init>":()V #2 = Fieldref #3.#21 // com/bill/M..原创 2021-03-12 17:54:27 · 261 阅读 · 0 评论 -
jvm之字节码解读——番外篇之JNI字段描述符
在上一篇文章中jvm之字节码解读——认识字节码文件结构解析(常量池),可能会有人对常量池里面的一些内容有疑问,例如#1 = Methodref #4.#20 // java/lang/Object."<init>":()V这里的"()V"表示的是什么意思呢?其实,这东西我们叫做JNI字段描述符,这里"()V"表示的是“没有入参并且返回参数为void”的方法。要搞清楚这个,我们得从头捋起我们先来看java定义方法是怎么定义的,最基础的,你是.原创 2021-03-12 16:49:30 · 248 阅读 · 1 评论 -
jvm之字节码解读——字节码文件结构解析(常量池)
根据前文jvm之字节码解读——认识字节码,我们可知,java的字节码文件结构为前文已经对魔数和版本号进行了分析jvm之字节码解读——认识字节码文件结构解析(魔数、版本号)下面,对紧跟在版本号的字段——Constant Pool(常量池)进行分析关于常量池,它的作用是,在jvm执行方法或者GC等动作时,jvm可以直接从常量池拿到数据,进行直接操作(因为有些数据会重复去拿,常量池的存在就使得整个字节码文件变得更小)我们先把之前的源代码和用javap命令得到的内容贴出来packa..原创 2021-03-12 15:19:55 · 396 阅读 · 1 评论 -
jvm之字节码解读——字节码文件结构解析(魔数、版本号)
根据前文jvm之字节码解读——认识字节码,我们可知,java的字节码文件结构为Magic Number(魔数)根据上图可知,魔数在字节码文件里占据4个字节,由于1个十六进制占据4位,所以2个十六进制就占据1个字节,所以4个字节,就是占据8个十六进制,那么,魔数对应的字节码内容就是魔数是一个固定的数值,它的意义在于能快速判断一个文件是不是字节码文件,如果不符合这种规则开头的,就不是字节码文件了PS:魔数的定义为CAFE BABE,由来也挺有意思的,CAFE是咖啡,java的图标就是..原创 2021-03-12 11:23:34 · 425 阅读 · 0 评论 -
jvm之字节码解读——认识字节码
1.准备工作准备工具十六进制编辑器,如果没有请绕道这里下载https://pan.baidu.com/s/1NxRCcQfJe8IJqRZ46IUHuA提取码:u0a3准备代码及字节码内容package com.bill;public class MyByteCodeTest1 { private int a = 1; public int getA() { return a; } public void setA(int原创 2021-03-12 11:13:59 · 191 阅读 · 0 评论