导航:首页 > 安装方法 > 方法返回地址动态连接存放在哪里

方法返回地址动态连接存放在哪里

发布时间:2024-06-08 13:51:27

⑴ java中,静态方法被调用是,存储在内存的哪个区域是栈还是放大区还是两者都有

在JDK8之前,静态成员(静态变量和静态方法)都是存储在方法区(永久代)中的静态区中(这里指类被加载后,静态成员的存储位置)。但在JDK8之后,永久代被移除了,取而代之的是元空间(metaspace)。但元空间中存储的主要是.class文件的元数据信息,静态成员的存储位置由方法区转到了堆内存(heap)中。
不过,不管是JDK8,还是更早的版本中,静态方法的执行(不仅仅是静态方法,还有普通的成员方法)都是在栈内存(stack)中进行的。每个线程都会在栈内存中开辟一个栈,在调用方法时,对应的方法都会在执行这个方法的线程的栈中创建一个“栈帧”,栈帧中保存了局部变量表(基本数据类型和对象引用)、操作数栈、动态连接和返回地址等信息。等到方法执行完毕,栈帧被销毁,对应的内存也将被释放。

⑵ Java构造函数(方法)存储在jvm哪个内存里

存放到方法区当中;
new出来的是实例对象,实例对象才是存放在堆当中;
构造函数对应的是<init>方法,方法信息随着类加载器加载到方法区当中。
栈:
以栈帧为单位,存放的不是方法具体的结构,只是通常一个方法对应一个栈帧,对应的入栈出栈就是栈帧的入栈出栈。栈帧中有局部变量表,操作数栈,方法返回地址,动态链接。其中局部变量表存放局部变量,包括形参,非静态方法默认在第一个索引存放一个this变量;操作数栈用于操作局部变量表和一些值的运算,比如读取表中变量的值进行运算,或存放相应的值到局部变量表中;方法返回地址则是用于记录对应方法的下一条指令的地址;动态链接是符号引用变成的直接引用。
堆:
存放实例对象,在jdk7开始,还存放静态变量和字符串常量池
方法区:
存放类元信息,比如完整类名全称,public,abstract等修饰符,实现的接口有序列表等;方法信息,比如修饰符,返回类型等;JIT代码缓存,也就是被即时编译器编译后的热点代码,用于提高性能;域信息,也就是属性信息,比如修饰符,类型等;运行时常量池,字节码文件中常量池的运行时表现,类似符号引用的记录,不过蕴含的信息更为丰富,而且具有动态性。jdk6及以前,还存放静态变量,运行时常量池中还存放字符串常量池,到了jdk7则移到了堆中。

阅读全文

与方法返回地址动态连接存放在哪里相关的资料

热点内容
黑炭钓鱼最佳方法 浏览:796
如何防止自己变老的方法 浏览:344
55乘101简便计算方法 浏览:644
气体管道的安装方法 浏览:552
全国超级简单的方法作文 浏览:393
芽庄沉香鉴别方法图解 浏览:625
暖气闸门安装方法 浏览:820
企业招商技巧及方法 浏览:639
红薯在家种植方法 浏览:929
用什么方法对付领导给你穿小鞋 浏览:352
羊奶粉食用方法 浏览:928
圆椒坐果的正确方法 浏览:252
用什么方法可以查出妻子出轨 浏览:698
美的电压力锅使用方法指示灯在哪里 浏览:781
电动车霍尔线检测方法 浏览:771
人体详细锻炼方法 浏览:159
不绣钢管道连接方法 浏览:533
自己如何减肥方法 浏览:808
训练武磊的方法 浏览:833
新宝贝破零的技巧方法 浏览:48