
深入理解JVM
文章平均质量分 93
拿笔小星Z
IT路漫漫,吾将上下而求索
展开
-
Java常量池理解与总结
java常量池转载 2016-07-31 22:03:37 · 357 阅读 · 0 评论 -
Java字节码结构剖析五:异常表
异常表实际上是Java代码的一部分,编译器使用异常表而不是简单的跳转命令来实现Java异常及`finally`处理机制。(注:在JDK1.4.2之前的Javac编译器采用了jsr和ret指令实现`finally`语句。在JDK1.7中,已经完全禁止Class文件中出现jsr和ret指令,如果遇到这两条指令,虚拟机会在类加载的字节码校验阶段抛出异常)原创 2019-01-05 00:31:06 · 2405 阅读 · 4 评论 -
Java字节码结构剖析四:属性表
了解了方法表的结构后,我们知道方法表有自己的属性表,用来存储与当前方法相关的附加属性。属性表每一个成员的值必须是`attribute`结构(如下所示:),一个方法可以有任意个与之相关的属性。原创 2018-12-09 18:09:40 · 1588 阅读 · 0 评论 -
浅析java内存模型
在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步?在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共...转载 2018-12-02 14:41:30 · 238 阅读 · 0 评论 -
Java字节码结构剖析三:方法表
这里给大家介绍一款字节码分析小工具——jclasslib bytecode viewer。它可以将字节码文件结构化的展现给我们看。原创 2018-11-18 16:44:58 · 2394 阅读 · 0 评论 -
Java字节码结构剖析二:字段表
上篇介绍了字节码文件的结构和其常量池分析。紧接其后呢,我们要去了解字段表的概念和组成结构。接着上篇里的字节码的常量池往后分析。access_flags访问标志信息包括该class文件是类还是接口,是否定义成public,是否是abstract,如果是类,是否被申明为final。access_flags 的取值范围和相应含义见下表。标记名值含义ACC_PUBLIC0...原创 2018-10-28 16:44:27 · 1110 阅读 · 0 评论 -
Java字节码结构剖析一:常量池
这篇博客开始,我打算手把手的带大家去解读一下JVM平台下的字节码文件(熟悉而又陌生的感觉)。众所周知,Class文件包含了我们定义的类或接口的信息。然后字节码又会被JVM加载到内存中,供JVM使用。那么,类信息到了字节码文件里,它们如何表示的,以及在字节码里是怎么分布的呢?带着这些问题,让我们去深入了解字节码文件吧。原创 2018-10-14 15:01:42 · 2605 阅读 · 1 评论 -
类初始化阶段详解
一个Java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况。如图所示: 类的初始化做了什么为类的静态变量赋予正确的初始值。执行类的静态代码块。按照顺序自上而下运行类中的变量赋值语句和静态语句,如果有父类,则首先按照顺序运行父类中的变量赋值语句和静态语句。什么时候类会被初始化只有类或接口...原创 2018-03-04 20:46:24 · 4607 阅读 · 7 评论 -
Java泛型对方法重载的影响(二)
虚拟机没有泛型类型对象——所有对象都属于普通类。在泛型实现的早期版本中,甚至能够将使用泛型的程序编译为在1.0虚拟机上运行的类文件!这个向后兼容性在Java泛型开发的后期被放弃了。无论何时定义一个泛型类型,都自动提供了一个相应的原始类型(raw type)。原始类型的名字就是删去类型参数后的泛型类型名。擦出(erased)类型变量,并替换为限定类型(无限定类型的变量用Object)。原创 2017-04-09 15:19:42 · 1386 阅读 · 1 评论 -
Java泛型对方法重载的影响(一)
java泛型是在编译期有效,在运行期被删除,也就是说所有的泛型参数类型在编译后都会被清除掉。因为虚拟机没有泛型类型对象——所有对象都属于普通类。原创 2017-04-09 14:47:13 · 10546 阅读 · 1 评论 -
Java SPI机制
**SPI(Service Privoder Interface)**,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。原创 2019-01-26 19:33:12 · 410 阅读 · 0 评论