介绍
本篇文章给大家分享的是有关jvm虚拟机栈在java中的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
jvm虚拟机栈的作用
jvm虚拟机栈栈帧的组成
jvm虚拟机栈,也叫java栈,它由一个个的栈帧组成,而栈帖由以下几个部分组成
- <李>
局部变量表——存储方法参数,内部使用的变量
李> <李>操作数栈——在变量进行存储时,需要进行入栈和出栈
李> <李>动态连接引,用类型的指针
李> <李>方法出口,方法的返回
李> <李>一段原程序代码
李>package com.lind.basic; public class  Demo1 { ,static int  hello (), { ,int a =, 1; ,int b =, 2; ,int c =, a +, b; ,return c; ,} ,public static  void main (String [], args), { ,System.out.println (hello ()); ,} }
<>强一生成字节码文件强>
<代码> javac demo1.java 代码>
生成之后,扩展名是。类,这个文件对于我们来说是没有可读性的。
<强>二对类文件反汇编强>
<代码> javap demo1。类在;demo1.txt 代码>
我们可以通过文件编译工具来查看demo1。txt的内容
Compiled 得到“Demo1.java" public class  com.lind.basic.Demo1 { ,public com.lind.basic.Demo1 (); ,代码: 0:才能aload_0 ,,1:invokespecial # 1,,,,,//, Method java/lang/对象!”& lt; init>“: V () 4:才能返回 ,static int  hello (); ,代码: ,,0:iconst_1 //,把第一个整型变量推到操作数栈 ,,1:istore_0 //,让它出栈,并存储到局部变量表 2:才能iconst_2 3:才能istore_1 4:才能,iload_0 //,加载第一个数据入操作数栈 5:才能,iload_1 //,加载第二个数据入操作数栈 6:才能,iadd //,将两个数相加,结束入操作数栈 7:,才能istore_2 //,将结果出栈,存到局部变量表 ,,8:iload_2 //,加载它入操作数栈 ,,9:ireturn //,返回 ,public static  void 主要(以[]); ,代码: ,,0:getstatic , # 2,,,,,//, Field java/lang/system . out: Ljava/io/PrintStream; 3:才能,invokestatic # 3,,,,,//, Method 你好:我() 6:才能,invokevirtual # 4,,,,,//, Method java/io/PrintStream.println: (I) V 9:才能返回 }
以上就是jvm虚拟机栈在java中的作用是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。