- 博客(4)
- 收藏
- 关注
原创 JVM-类加载
类的生命周期:加载,验证,准备,解析,初始化,使用,卸载。这些阶段通常都是互相交叉地混合式进行的,通常会在一个阶段执行的过程中调用或激活另外一个阶段。什么情况下需要开始类加载过称的第一个阶段:加载,并没有强制约束。 但对于初始化阶段,虚拟机规范则是严格规定了有四种情况必须立即对类进行“初始化”。(而加载,验证,准备自然需要在此之前开始)。 1)遇到new,getstatic,putstatic或
2017-03-08 21:01:49 346
原创 JVM-class文件结构解析
解析class文件的结构——魔数 + class文件次版本号 + class文件主版本号——常量池——访问标志——类索引,父类索引,接口索引——字段表集合——方法表集合——属性表集合class文件是一组以8位字节为基础单位的二进制流,紧密排列没有分隔符。 class文件数据结构,包括两种数据类型:无符号数 和 表。 无符号数:属于基本的数据类型,u1,u2,u4,u8分别代表1个字节,2个字节,
2017-03-06 21:41:20 517
原创 JVM-内存分配
JVM分为:方法区(Method Area):用于存储类结构信息的地方,包括常量池、静态变量、构造函数等。虽然JVM规范把方法区描述为堆的一个逻辑部分, 但它却有个别名non-heap(非堆),所以大家不要搞混淆了。方法区还包含一个运行时常量池。java堆(Heap):存储java实例或者对象的地方。这块是GC的主要区域(后面解释)。从存储的内容我们可以很容易知道,方法区和堆是被所有java线程共享
2017-03-05 11:36:37 399
原创 Java Foreach的局限性
局限性:比如我想给一个对象数组中的每一个都赋值:for(Pet pet : pets) { pet = new Pet();} foreach的实际过程为:for(int i = 0; i < pets.length; i++) { Pet pet = pets[i]; pet = new Pet();}所以可见foreach根本不会改变所赋予的值。 无论是基本变量的值
2017-03-01 16:58:14 877
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人