![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
虚拟机学习
阿灬满
这个作者很懒,什么都没留下…
展开
-
Java虚拟机_01
每天面向对象编程,却大部分都没有对象的Java程序员们,最近工作还顺利么?每个Java程序员每天都在和虚拟机打交道,可虚拟机你真的了解么?今天,我们一起来聊一下虚拟机的类加载.其实在Java代码中,类型加载,连接和初始化过程都是在程序运行期间完成的,上边这句话有四个点需要着重解释一下我们先来看一下类型吧,在Java语言中,类型的描述光有.class,还有接口,枚举,这些类型都是提前编译好的...原创 2019-07-22 18:58:59 · 128 阅读 · 0 评论 -
Java虚拟机_02
类的加载,连接与初始化.Java程序对类的使用方式可分为两种:主动使用: 特征.七种:1.创建类的实例:new Object();2.访问某个类或者接口的静态变量(getstatic),或者对该静态变量(putstatic)赋值3.调用类的静态方法.4.用invoke方法来反射 如Class.forName(“com.test.Test”)5.初...原创 2019-07-22 19:02:32 · 56 阅读 · 0 评论 -
Java虚拟机_03
-XX:+TraceClassLoading,用于追踪类的加载信息并打印出来.在ideaVMoption中配置: -XX:+TraceClassLoading,运行主类,结果如下:表示虚拟机,在当前类下,虚拟机加载类的信息第一个为Object,代表加载Object类,所有类的父类.自己创建的类,首先加载main函数,代表该类主动使用.JVM参数:...原创 2019-07-22 19:10:27 · 82 阅读 · 0 评论 -
Java虚拟机_04
助记符: Ldc,表示将int,float或是String类型的常量从常量池中推送至栈顶 Bipush表示将单字节(-127~127)的常量值推送至栈顶 Sipush表示将一个短整型常量值(-32768-32767)推送至栈顶 Iconst_1表示将int类型1推送至栈顶.(iconst_0-iconst_5代表将in...原创 2019-07-22 19:14:49 · 78 阅读 · 0 评论 -
Java虚拟机_05
关于接口的基本特点:改变常量定义位置结果改变:原因分析:当一个类调用静态方法的时候,对该类算是主动使用,初始化顺序.先在虚拟机中给counter1赋值为0,counter2变为0.然后再初始化Singleton对象,这时候counter2=1,接下来初始化,counter2被覆盖为0.所以打印counter2为0在主动使用类的初始化之前,会给静态变量赋值...原创 2019-07-22 19:16:53 · 80 阅读 · 0 评论 -
Java虚拟机_06
类的加载: 开始阶段,装载类HelloApp,如果装载了,那么就进行链接步骤,如果没有装载那么调用ClassLoader进行类的装载.然后进入到链接阶段. 初始化阶段,为静态变量赋值,之后进入使用阶段,最后进入到类的卸载阶段. 加载:就是把二进制形式的Java类型文件读入到Java虚拟机中.验证:准备:为变量分配内存,设置默认值.但是在到达初始...原创 2019-07-22 19:17:43 · 148 阅读 · 0 评论