首页编程java编程java方法区存放什么地方?java线程存放在jvm的哪个区域方法又存放在哪个区呢

java方法区存放什么地方?java线程存放在jvm的哪个区域方法又存放在哪个区呢

编程之家2023-10-1299次浏览

大家好,如果您还对java方法区存放什么地方不太了解,没有关系,今天就由本站为大家分享java方法区存放什么地方的知识,包括java线程存放在jvm的哪个区域方法又存放在哪个区呢的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

java方法区存放什么地方?java线程存放在jvm的哪个区域方法又存放在哪个区呢

java中的实例方法存在哪

HI我,我对你的问题蛮感兴趣的

类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了...

类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。

java方法区存放什么地方?java线程存放在jvm的哪个区域方法又存放在哪个区呢

而静态的又不一样了,静态的东西存在静态区,他们和类是一个等级的,就是说只要类被装载,它们就可以直接用.(用类名来调用).他们不依赖与任何对象,所以也不能输出任何对象的成员属性.(除非成员属性也是静态的).

而你最后的一句话也是错的,"类的所有数据在内存中只有静态的才又空间".

当然不是,每个对象在new的时候都会在堆区中开辟内存,用来保存对象的属性和方法.(实际上方法保存的只是方法区的引用,如果保存的是方法本身,那么试想一下,有多少个对象就得有多少个方法,那么又和第一点中"实例方法在内存中只有一份拷贝"相矛盾了)

java方法区存放什么地方?java线程存放在jvm的哪个区域方法又存放在哪个区呢

好了,事实上内存图很复杂和麻烦,算比较深的东西了,很多用JAVA多年的人也不太了解其原理,因为开发也不要用..

Java方法区和堆分别储存什么

堆区:

1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)

2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

栈区:

1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中

2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。

方法区:

1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

java中 static变量和方法到底是存在内存什么区域

static变量存在的意义就是不需要实例化某个类就可以调用类的加载是由第一次调用该类的static变量触发的而不是相反(这里仅讨论static变量和类的加载),所以说如果你不调static变量那这个类就不会被加载,变量也不会存在,没load的东西根本谈不到内存占用。static修饰过多我认为理论上是存在内存占用的问题,但问题是static变量并不会随着你不断的创建新对象而增多,因为它在变量被正式创建之前就存在了,你一个系统才能有几个static变量啊,能建上哪怕超过一千个都很火星了。

java线程存放在jvm的哪个区域方法又存放在哪个区呢

聊到JAVA中的方法,大多数人对于方法存储在方法区还是栈区(虚拟机栈)是很迷茫的。其实方法是存在方法区的下面我们就细细说一下JVM中的方法区 VS栈区方法区:用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,方法编译出的字节码也是保存在这

好了,文章到这里就结束啦,如果本次分享的java方法区存放什么地方和java线程存放在jvm的哪个区域方法又存放在哪个区呢问题对您有所帮助,还望关注下本站哦!

mime在java中什么意思,各种后缀名代表什么意思安哥拉首都 安哥拉首都罗安达地图