目录:
java虚拟机汇总
- class文件结构分析
1).class文件常量池中的常量项结构
2). 常用的属性表的集合 - 类加载过程
1).类加载器的原理以及实现 - 虚拟机结构分析
1).jdk1.7和1.8版本的方法区构造变化
2).常量池简单区分<<== 现在位置 - 对象结构分析
1).压缩指针详解 - gc垃圾回收
- 对象的定位方式
第一class文件里有一个常量池,叫做类文件常量池(不清楚的看class文件解析,详细讲过了)
第二jdk1.8在我们元空间中有个运行时常量池(就存放些你定义的类常量而已,没什么可讲的)
第三在我们堆中有个字符串常量池
在这里说一下字符串常量池
String s = “ok”
会先检查你的字符串常量池中有没有此字符串(用equal方法判断),有的话直接将地址赋值给s,没有的话向你的字符串常量池中创建一个对象
也就是说
String s1 = “ok”
String s2 = “ok”
是一样的地址
s1==s2 true
而String s = new String(“ok”)
注意!!!会首先检查你的字符串常量池中有没有这个对象,没有的话将在你的字符串常量池和堆中都创建一个对象,这两个对象是不同的,