课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java编程开发语言是目前大多数软件开发程序员都在学习的一个编程开发语言,今天我们就通过案例分析来了解一下,java编程字节码的概念与应用方法。
JVM中基本的数据单元是字,字长必须足够大,至少一个字长足以持有byte、short、int等的值,2个字长足以持有long、double的值,字长可以选择32位或者64位。
字长是CPU的主要技术指标之一,指的是CPU一次能并行处理的二进制位数,字长总是8的整数倍,通常PC机的字长为16位(早期),32位,64位。
栈帧的2个部分:局部变量区和操作数栈,是按字来定义的。当把值放入局部变量区或者操作数栈时,它将占有1个或2个字单元。
每启动一个新线程,JVM都为它分配一个Java栈,Java栈以帧为单位保存线程的运行状态,JVM对Java栈执行2种操作:以帧为单位的压栈和出栈。
每当线程调用一个Java方法时,JVM会在线程的Java栈中压入一个新帧,而这个新帧也成了当前帧,当执行这个方法时,它使用这个帧来存储参数、局部变量、中间运算结果等数据。
Java方法有2种方式完成,一种通过return返回,一种通过抛出异常中止,不管那种方式,JVM都将当前帧弹出Java栈然后释放掉,这样上一个方法的帧就成为当前帧了。
Java栈上的所有数据都是此线程私有的,任何线程都不能访问另一个线程的栈数据,因此栈数据是线程安全的。
栈帧由3部分组成:局部变量区、操作数栈、帧数据区。
局部变量区和操作数栈是以字长(32位)为单位的数组。
局部变量区包含方法的参数和局部变量,编译器先按把这些参数放入局部变量数组。Java栈帧的局部变量区被组织为一个以字长为单位,从0开始计数的数组。字节码指令通过从0开始的索引来使用其中的数据,如iload_1(把局部变量区的2个变量压入栈顶),byte、short、int等的值在数组中只占据1项,而long、double的值在数组中占据连续的2项。
操作数栈:和局部变量区一样,操作数栈也是被组织成一个以字长为单位的数组,但是它不是通过索引来访问,而是通过标志的栈操作:压栈和出栈来访问的。如iadd指令,从操作数栈中弹出2个整数,执行加法运算,然后将其结果压回操作数栈。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。