class Lava{
private int speed = 0;
void flow(){
}
}
class Volcano{
public static void main(String args[]){
Lava lava = new Lava();
lava.flow()
}
}
学习后,理解的执行过程:
- 虚拟机找到Volcano的class文件,提取里面的二进制文件到方法区。
- 执行保存在方法区的字节码,开始main方法。此时,Lava类还没有被加载,等到需要时,才会加载。
- 为常量池中的类分配内存,发现第一个是Lava类的一个符号引用,这个符号引用是com/test/aaa/Lava 这种类型的表示方式,仅仅是个字符串,检查方法区,发现Lava类尚未加载。查找Lava.class文件,读取二进制信息到方法区。
- 以一个指向方法区的直接引用替换掉上面字符串“Lava”,以后就可以用这个指针来访问Lava类了,这就是所谓的常量池解析。把常量池中的符号引用替换成直接引用。
- 终于到new这里了,虚拟机为新的Lava对象分配内存,这时候,又需要方法放到方法区里的Lava类的信息了,通过刚才的指针,从里面找出:创建这个类需要多少内存呢?(这个由虚拟机的设计者决定)。好了,在内存堆里分配一块给Lava对象。然后初始化属性speed,如果有超类,且有实例变量,超类也会初始化。
- 可以执行方法了。把Lava对象的引用压到栈中。此时,算是执行完main方法的第一行了。接着就是执行方法。这个下次再说。嘿嘿。
分享到:
相关推荐
深入理解Java虚拟机学习笔记借鉴.pdf
虚拟机学习笔记--周志明老师第三版
在本篇内容里小编给大家分享了关于java虚拟机学习笔记的进阶内容,需要的朋友们跟着学习下。
vSphere Client就是用来管理虚拟机的客户端,安装在管理主机上,ESXi大部分的操作是在vSphere Client之下完成的。
Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...
该文档是本人的学习笔记,尚未精修,后续会精修排版. 学习笔记:深入浅出 Java 虚拟机.docx
java学习笔记3(java虚拟机)java学习笔记3(java虚拟机)
你还在为新安装的虚拟机不能上网发愁吗?关于linux上网配置你还没有完全掌握吗?那欢迎下载这篇文档学习一下吧!
Java虚拟机JVM类加载学习笔记
JVM 学习笔记(Java虚拟机)
深入Java虚拟机JVM类加载学习笔记:jvm java classloader 垃圾回收 gc
在本篇文章里小编给大家整理的是关于java虚拟机学习笔记的相关内容,分享了一些基础知识点,需要的朋友们参考下。
自己有个习惯,学习新的知识喜欢一边看一边写笔记,这个是学习java虚拟机的时候写的笔记。
Vmvare虚拟机学习笔记,欢迎交流
java学习笔记4(java多线程)java学习笔记4(java多线程)
JVM深入理解Java虚拟机 - 学习笔记
1) 命令:sudo passwd root 2) 输入两遍新的密码 ... 2) 命令:sudo apt-get upgrade 对系统中的软件都更新升级 3) 命令:sudo apt-get upgrade 软件名 更新升级某个软件 常用命令: ls 查看
java程序是运行在java虚拟机当中的,在java虚拟机的堆中运行着程序所创建的对象。可以使用new,newarray,anewarray,multianewarray指令来创建对象,但是没有明确的代码来释放这些对象所使用的空间。垃圾收集是自动...
FreeNas8.3学习笔记7NFS结合XEN虚拟机的使用.pdf
C程序学习第一天学习笔记:使用虚拟机基础编译,进制转换,注意事项。