java连接lliux虚拟机怎么执行回车命令
发布网友
发布时间:2022-05-18 11:28
我来回答
共1个回答
热心网友
时间:2023-10-15 18:11
前面我们说明了java源码被编译成为了二进制字节码,二进制字节码转为内存中方法区里存储的活化对象,那么最重要的程序执行就做好了基础:当方法区里的字段和方法按照虚拟机规定的数据结构排好,常量池中的符号引用数据在加载过程中最大限度地转为了直接引用,那么这个时候虚拟机就可以在加载主类后创建新的线程按步执行主类的main函数中的指令了。
java虚拟机执行程序的基础是特定的二进制指令集和运行时栈帧:
二进制指令集是java虚拟机规定的一些指令,在编译后二进制字节码的类方法里的字节码就是这种指令,所以只要找到方法区里的类方法就可以依照这套指令集去执行命令。
运行时栈帧是虚拟机执行的物理所在,在这个栈帧结构上,方法的局部变量、操作数栈、动态链接和返回地址依序排列,依照命令动态变换栈帧上的数据,最终完成所有的这个方法上的指令。
栈帧的进一步划分:
局部变量表:包括方法的参数和方法体内部的局部变量都会存在这个表中。
操作数栈:操作数栈是一个运行中间产生的操作数构成的栈,这个栈的栈顶保存的就是当前活跃的操作数。
动态链接:我们之前提到这个方法中调用的方法和类在常量池中的符号引用转换为的直接引用就保存在这里,只要访问到这些方法和类的时候就会根据动态链接去直接引用所指的地址加载那些方法。
返回地址:程序正常结束恢复上一个栈帧的状态的时候需要知道上一个指令的地址。