jvm
攀攀攀啦
这个作者很懒,什么都没留下…
展开
-
类加载问题汇总
类加载时机(主动引用)new、getStatic、putStatic,invokeStatic指令时加载。反射调用时,如果类没有进行init,会先init。作为父类加载。JVM启动时指定的主类。java.lang.invoke.MethodHandler被动引用通过子类引用父类的静态字段,不会加载子类。定义引用类数组,底层是Object类型不会加载引用类型。使用类的静态常量池不会触发类加载。类加载过程加载:通过类的全限定名来获取类的二进制字节流。将字节码静态结构转化为方原创 2020-09-29 13:27:17 · 237 阅读 · 0 评论 -
方法调用字节码命令
指令invokeinterface调用接口方法,在运行时搜索一个实现了这个接口方法的类型invokevirtual调用对象的实例方法,根据对象的实际类型进行分派invokedynamic允许应用级别的代码来确定执行哪一个方法调用invokevirtualinvokevirtual常用与动态分派,即调用子类重写的方法,这里不同于调用接口方法。动态分派使用了虚方法表实现,虚方法表中只会存放可以被重写的方法,而且通常不会包含接口方法。如果虚方法表中将父类的虚方法表中的...原创 2020-09-18 11:06:34 · 149 阅读 · 0 评论 -
方法字节码分析
下面引用《深入理解Java虚拟机》中关于方法重载的说明在java语言中,要重载(Overload)一个方法,除了要与原方法具有相同的简单名称之外,还要求必须拥有一个与原方法不同的特征签名,特征签名就是一个方法中各个参数在常量池中的字段符号引用的集合,也就是因为返回值不会包含在特征签名之中,因此Java语言里面无法仅仅依靠返回值的不同来对一个已有方法进行重载。下面分析方法表示和重载。...原创 2019-12-13 16:50:56 · 264 阅读 · 0 评论 -
Java引用类型分析
在Java中有几种不同强度的引用类型包括:强引用,软引用,弱引用,终结方法引用,虚引用。因为引用类型的实现和垃圾回收密切相关,所以很多工作都需要在vm中完成。下面将分析这些引用。1、强引用(StrongReference):普通的引用,回收器永远不会将强引用置空。被StrongReference引用的对象,在GC标记过程中属于(强)可达对象。2、软引用(SoftReference):回收器...原创 2019-12-09 12:02:27 · 135 阅读 · 0 评论 -
JVM学习笔记(一)方法区
虚拟机分的内存分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器。其中方法区和堆是重点,相对理解起来也更复杂。方法区:是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。方法区只是虚拟机规范中定义的一种概念区域,只规定了方法区的功能,实际实现有很大区别。例如,之前将hotspot中的方法区成为永久代,但是在后来永久代被取消,因为将永久代作为...原创 2019-11-19 15:52:47 · 152 阅读 · 0 评论