java静态变量存储在
㈠ java中静态变量储存的问题
java静态变量是存储在内存中的,需要依赖于程序启动之后使用,如果程序都结束了自然就没有了,如果想要长时间存储就要使用数据库或者文件之类的存储到你的硬盘上去
㈡ Java中成员变量分配在哪个空间
变量分为成员变量和局部变量;
成员变量又分为实例变量和静态变量;
实例变量在对象创建的时候分配内存空间,存储在堆内存中;
静态变量在类加载的时候分配内存空间,存储在元空间;
局部变量在方法执行时分配内存空间,存储在栈内存中。
㈢ java中,静态方法被调用是,存储在内存的哪个区域是栈还是放大区还是两者都有
在JDK8之前,静态成员(静态变量和静态方法)都是存储在方法区(永久代)中的静态区中(这里指类被加载后,静态成员的存储位置)。但在JDK8之后,永久代被移除了,取而代之的是元空间(metaspace)。但元空间中存储的主要是.class文件的元数据信息,静态成员的存储位置由方法区转到了堆内存(heap)中。
不过,不管是JDK8,还是更早的版本中,静态方法的执行(不仅仅是静态方法,还有普通的成员方法)都是在栈内存(stack)中进行的。每个线程都会在栈内存中开辟一个栈,在调用方法时,对应的方法都会在执行这个方法的线程的栈中创建一个“栈帧”,栈帧中保存了局部变量表(基本数据类型和对象引用)、操作数栈、动态连接和返回地址等信息。等到方法执行完毕,栈帧被销毁,对应的内存也将被释放。
㈣ java中 static变量和方法到底是存在内存什么区域
JVM内存总体一共分为了
4个部分(stack segment、heap segment、code segment、data segment)
当我们在程序中,申明一个局部变量的时候,此变量就存放在了 stack segment(栈)当中;
当new 一个对象的时候,此对象放在了heap segment(堆)当中;
而static 的变量或者字符串常量 则存在在 data segment(数据区)中;
那么类中方法的话,是存在在 code segment(代码区)中了。