![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
WindSearcher
打造自己的梦想,否则就被雇佣打造他人的梦想!
展开
-
Class类文件的结构(一)常量池、访问标志和索引
Java在诞生时就以一次编写,到处运行特点在各个平台都可以进行运行。其实就是通过不同的编译器(Javac编译器,jrubyc编译器,groovyc编译器等等)将代码编译成规范的class文件,虚拟机只要接收到claas文件而并不关心是class文件时哪一种编译器编译的,这样就到达了(write one,run anywhere)。所以要想更好的了解虚拟机,下面我们走进class文件中!! 前...原创 2019-07-01 22:02:35 · 434 阅读 · 0 评论 -
第2章 Java内存区域与内存溢出异常
2.2 运行时数据区域 1、Java虚拟机运行时数据区域有哪些? 2.2.1 程序计数器 1、什么是程序计数器?什么是字节码解释器? 2、程序计数器是线程私有的吗? 3、如果正在执行的是Native方法,程序计数器的内容如何? 4、唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域是哪个? 程序计数器可以看作当前线程所执行的字节码的行号指示器,字节码...原创 2019-07-02 17:46:57 · 105 阅读 · 0 评论 -
第3章 垃圾收集器与内存分配策略
3.2 对象已死吗? 在垃圾回收器回收之前需要确定对象是活着还是死了(不在被任何途径调用)。3.2.1 引用计数算法 1、什么是引用计数算法?它的弊端是什么? 引用计数算法:给对象添加一个引用计数器,当对象被引用时,计数器加一。当引用实效时,计数器减一。当任何时刻计数器为0时,就认为对象已死。这种方法方便,高效。但是有一个问题,当两个对象相互应用对方,但是不在有外界调用它...原创 2019-07-03 21:42:36 · 103 阅读 · 0 评论 -
第七章 虚拟机类加载机制
7.2 类加载的时机1、类的整个生命周期分为哪7个阶段? 加载、验证、准备、解析、初始化、使用、卸载 2、虚拟机规范严格规定了有且只有哪5种情况必须立即对类进行初始化? 1).遇到new、getstatic、putstatic、invokestatic这4条字节码指令,如果类没有进行初始化,则需要先触发初始化。生成这4条指令最常见的Java代码场景:使用new关键字实...原创 2019-07-18 22:38:47 · 116 阅读 · 0 评论 -
Java对象生命周期
Java生命周期 1.创建阶段(Created) 2.应用阶段(In Use) 3.不可见阶段 4.不可达阶段 5.收集阶段 6.终结阶段 7.对象空间重分配阶段 对象的生命周期和类的生命周期是不同的概念 1.创建阶段(Created) 在创建阶段系统通过下面的几个步骤来完成对象的创建过程 l 为对象分配存储空间 l 开始构造对象 l 从超类到子类对st...原创 2019-07-20 14:47:30 · 137 阅读 · 0 评论 -
String.intern()
转载:https://blog.csdn.net/soonfly/article/details/70147205 其实要搞明白String.intern(),我总结了下面几条规则: 一、new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添加到常量池中(stringTable维护),并返回指向该常量的引用。 补充下:String s = ne...原创 2019-07-21 12:28:24 · 147 阅读 · 0 评论