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