java 虚拟机的理解
2015-07-24 09:44
351 查看
当运行"java thb.java " 命令时,就启动了一个java虚拟机进程,java虚拟机进程会在类路径中,找到thb.java 源文件,读取源文件的二进制数据,并把二进制数据加载到内存中,放到运行内存中的方法区中。字节码验证器会验证加载字节码是否腐恶语法,然后解析器会解析字节码,最后初始化。
thb t=new thb(); java 虚拟机执行这条语句的步骤,1.搜索方法区,看方法区内是否有thb类的字节码,没有,加载字节码到方法区 2.在堆区中存放thb对象,该对象持有指向方法区内字节码的引用 3.栈中的变量t 引用堆区中的对象,它指向堆区中对象实例的引用。
当执行对象的方法时,比如speak方法,当执行t.speak( )方法时,java虚拟机根据局部变量 t 持有的引用,定位到堆区中的thb实例,在根据thb实例持有的引用,定位到方法区中thb类的类型信息,从而获得speak()方法的字节码,接着执行speak()方法包含的指令。
thb t=new thb(); java 虚拟机执行这条语句的步骤,1.搜索方法区,看方法区内是否有thb类的字节码,没有,加载字节码到方法区 2.在堆区中存放thb对象,该对象持有指向方法区内字节码的引用 3.栈中的变量t 引用堆区中的对象,它指向堆区中对象实例的引用。
当执行对象的方法时,比如speak方法,当执行t.speak( )方法时,java虚拟机根据局部变量 t 持有的引用,定位到堆区中的thb实例,在根据thb实例持有的引用,定位到方法区中thb类的类型信息,从而获得speak()方法的字节码,接着执行speak()方法包含的指令。
相关文章推荐
- org.springframework.transaction.CannotCreateTransactionException
- 【连载】Maven系列(四)——配置私服
- JDK环境变量配置
- Java Socket编程
- Java语言系列03——基本数据类型
- 一种最简单的Java环境变量配置
- eclipse运行maven的jetty插件内存溢出
- Spring读取配置文件,获取bean的几种方式
- 性能分析工具Eclipse Mat
- String在java编程中使用细则
- Eclipse debug高级 技巧(转)
- Java String 比较和 Integer 比较
- eclipse导入工程时找不到R文件
- Ubuntu环境下配置jdk并安装android studio
- eclipse禁用js验证
- eclipse中outline中图标含义
- Java 三目运算符
- 让mac的F键恢复它标准的功能,以后比如在eclipse的debug时,就不要按Fn
- Java开发中的23种设计模式详解
- Java中OutOfMemoryError(内存溢出)的三种情况及解决办法