随笔分类 -  JVM深入学习

上一页 1 2 3 4 5 下一页

JVM是一个让人望而却步的东东,做为一个有志向的Java开发人员深入学习它是非常有必要的~~所以接下来准备一点点剖开它神秘的面纱~
Java对象内存分配原理与布局
摘要:当一个对象被创建了,那在JVM中是如何的从一个对象不存在到存到,然后将对象存放在什么地方呢?这次主要来探讨一下Java对象创建的过程。 new关键字创建对象的3个步骤: 1、在堆内存中创建出对象的实例。 当我们用new关键字来创建对象的实例时,JVM首先会检查new这个指令的参数是不是能造常量池中定 阅读全文

posted @ 2019-03-31 00:19 cexo 阅读(902) 评论(0) 推荐(0) 编辑

JVM堆空间用途分析与划分依据
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9876493.html】已经对JVM的内存空间的划分进行了理论化的学习,这次还是对上一次提到的理论进行进一步的补充,纯知识巩固,先来回顾一下上节JVM整个内存都由哪些构成: 下面则按照上述提到的顺序过一下: 虚拟机栈 阅读全文

posted @ 2019-03-28 22:48 cexo 阅读(448) 评论(0) 推荐(0) 编辑

JVM内存空间划分与作用详解
摘要:在之前已经对Java的字节码进行了非常详细而又系统的学习了,接下来开启jvm内存相关的新篇章,在一个新知识开头之前肯定得理论化的对其进行一个整体的介绍,所以摒弃浮躁,先来看看相关的理论,主要是看一下JVM内存的相关结构: 虚拟机栈:每一个方法在执行的过程中都会生成一个栈帧(Stack Frame,在 阅读全文

posted @ 2018-10-30 14:02 cexo 阅读(920) 评论(0) 推荐(0) 编辑

动态代理实现机制深层次分析与动态字节码生成总结
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9847915.html】已经通过源码的方式将动态代理字节码文件生成出来了,如下: 下面来分析一下该字节码的内容,双击打开IDE就可以反编译其字节码的内容,如下: 其中可以看到有个传一个InvocationHandle 阅读全文

posted @ 2018-10-30 09:50 cexo 阅读(692) 评论(0) 推荐(2) 编辑

透过字节码生成审视Java动态代理运作机制
摘要:对于动态代理我想应该大家都不陌生,就是可以动态去代理实现某个接口的类来干一些我们自己想要的功能,但是在字节码层面它的表现是如何的呢?既然目前刚好在研究字节码相关的东东,有必要对其从字节码角度来审视一下。 下面先来实现一个动态代码的程序: 先新建一个接口: 接下来定义一个具体的实现类: 然后再建议一个 阅读全文

posted @ 2018-10-25 09:39 cexo 阅读(709) 评论(0) 推荐(0) 编辑

基于栈的指令集与基于寄存器的指令集详细比对及JVM执行栈指令集实例剖析
摘要:基于栈的指令集与基于寄存器的指令集详细比对: 这次来学习一些新的概念:关于Java字节码的解释执行的一种方式,当然啦是一些纯理论的东东,但很重要,在之后会有详细的实验来对理论进行巩固滴,下面来了解一下: 现在JVM在执行Java代码的时候,通常都会将解释执行与编译执行二者结合起来进行。所谓解释执行, 阅读全文

posted @ 2018-10-22 22:24 cexo 阅读(906) 评论(0) 推荐(0) 编辑

虚方法表与动态分派机制详解
摘要:在上两篇中分别对方法重载【https://www.cnblogs.com/webor2006/p/9723289.html】和方法重写【https://www.cnblogs.com/webor2006/p/9797506.html】在字节码中的表现进行了详细的分析,其中得出如下结论:方法重载是静态 阅读全文

posted @ 2018-10-19 09:57 cexo 阅读(2370) 评论(0) 推荐(0) 编辑

通过字节码分析Java方法的静态分派与动态分派机制
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9723289.html】中已经对Java方法的静态分派在字节码中的表现了,也就是方法重载其实是一种静态分派的体现,这次来分析一下与之对应的动态分派机制,其表现就是方法的重写多态机制,下面先来看下代码: 很显然是一个多 阅读全文

posted @ 2018-10-16 13:42 cexo 阅读(655) 评论(0) 推荐(0) 编辑

方法重载与invokevirtual字节码指令的关系
摘要:这次来看一下跟方法调用相关的东东,对于字节码而言跟方法调用的助记符有如下几个: invokeinterface:调用接口中的方法,实际上是在运行期决定的,决定到底调用实现该接口的哪个对象的方法。 invokestatic:调用静态方法。【重要】 invokespectial:调用自己的私有方法、构造 阅读全文

posted @ 2018-09-29 13:41 cexo 阅读(808) 评论(2) 推荐(2) 编辑

栈帧与操作数栈剖析及符号引用与直接引用的转换
摘要:我们知道在Java中异常处理有两种方式,一种是try...catch...一下,这个在上一次【https://www.cnblogs.com/webor2006/p/9706466.html】中已经进行了详细且完整的分析,但是还缺少往方法上throws的情况,所以这里对其进行补充一下,先修改源代码: 阅读全文

posted @ 2018-09-28 13:28 cexo 阅读(665) 评论(0) 推荐(0) 编辑

通过字节码分析Java异常处理机制
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9691523.html】初步对异常表相关的概念进行了了解,先来回顾一下: 其源代码也贴一下: 下面来看一下jclasslib关于这个test()的信息: 咱们重点来看一下Code信息,如下: 其实也就是对应于java 阅读全文

posted @ 2018-09-26 13:50 cexo 阅读(459) 评论(0) 推荐(0) 编辑

通过字节码分析this关键字以及异常表的重要作用
摘要:在之前的字节码分析中缺少对异常的介绍,这次主要来对字节码异常表相关的东东进行一个学习,下面先来编写一个相关异常的小程序: 接着编译来看用javap -verbose来查看一下它的字节码信息: 其中重点观注一下test()方法的信息: 其中stack表示这个方法运行的任何时刻所能达到的操作数栈的最大深 阅读全文

posted @ 2018-09-22 22:38 cexo 阅读(416) 评论(0) 推荐(0) 编辑

构造方法与静态代码块字节码指令详解
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9630895.html】中已经花了很大的篇幅完整的将复杂文件中的常量相关的信息给分析完了,这次来将剩下的字节相关的信息给分析完,那接下来该分析啥了呢?先来整体回顾一下Java字节码的整体结构: 下面则一个个接着进行分 阅读全文

posted @ 2018-09-20 22:53 cexo 阅读(478) 评论(0) 推荐(0) 编辑

复杂字节码文件的分析过程
摘要:上一次【https://www.cnblogs.com/webor2006/p/9595300.html】了解了synchronized关键字在字节码中的表现形式了,接下来则从头至尾完整的对以下这个稍复杂的字节码文件进行分析,其源文件为: 其对于应二进制字节码信息用“Hex Fiend”打开: 可以 阅读全文

posted @ 2018-09-11 22:47 cexo 阅读(343) 评论(2) 推荐(1) 编辑

synchronized关键字所生成的字节码详细分析
摘要:在之前已经将如下这样的源文件对应的字节码文件完整的分析完了,如下: 这次再来写一个内容稍丰富一点的类,准备再来从头至尾的来分析一下,对其字节码的理解进一步巩固,如下: 然后用javap -verbose来查看一下反编译信息: 由于这次的类中声明有静态变量,所以标红处多了一个static块,下面将“- 阅读全文

posted @ 2018-09-05 22:22 cexo 阅读(639) 评论(0) 推荐(0) 编辑

Java字节码整体分析与总结
摘要:上一次【https://www.cnblogs.com/webor2006/p/9508341.html】已经将编译器生成的默认构造方法的字节相关的分析完了,接下来则分析咱们自定义的方法啦,按照顺序来讲的话应该是再分析getA()了: 还是按照方法的结构来分析,先来回忆一下方法的结构: 前两个字节表 阅读全文

posted @ 2018-08-21 22:30 cexo 阅读(342) 评论(0) 推荐(1) 编辑

Java字节码方法表与属性表详解
摘要:继续跟着上一次【https://www.cnblogs.com/webor2006/p/9502507.html】的那10个代表code的字节分析,如下: 而这些字节其实对应的信息是它: 所以问题就来了,aload_0不是助记符信息么,怎么就能够跟字节码文件中的字节对应上呢?所谓助记符其实也就是帮忙 阅读全文

posted @ 2018-08-20 21:44 cexo 阅读(616) 评论(0) 推荐(0) 编辑

Java字节码方法表结构深度剖析
摘要:继续上一次【https://www.cnblogs.com/webor2006/p/9459681.html】的字节码分析,这次来分析一下最为复杂的方法表的信息,如下: 而上一次分析到了属性表的位置在: 接着来看一下方法表相关的信息: 所以往下找两个字节: 因为有一个编译器为其生成的一个构造方法,这 阅读全文

posted @ 2018-08-19 20:36 cexo 阅读(376) 评论(0) 推荐(0) 编辑

Java字节码方法表与属性表深度剖析
摘要:方法表: 在上一次咱们已经分析到了字段信息了,如下: 紧接着就是方法相关的信息了: 而它展开之后的结构为: 所以往后数2个字节,看一下方法的总数: 3个方法,可咱们只定义了两个方法呀: 因为编译器会为我们生成一个默认的构造方法,所以就3个了,那每个方法的具体信息是啥呢?它是一个method_info 阅读全文

posted @ 2018-08-11 14:26 cexo 阅读(1243) 评论(0) 推荐(0) 编辑

字节码访问标志与字段表详解
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9457722.html】对字节码的整体结构有了一个初步认识,回顾一下: 下面再来看另外一个更加直观的表: 其中需要说明的是: 如果接口个数为0的话,那么下面的接口名则不会出现了,其它的字段、方法、附加属性都类似。 还 阅读全文

posted @ 2018-08-10 23:23 cexo 阅读(858) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 下一页

导航