
正文
java静态代码在内存,静态代码块放在哪块内存
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java静态方法和实例方法在内存的分布情况
在JDK8之前,静态成员(静态变量和静态方法)都是存储在方法区(永久代)中的静态区中(这里指类被加载后,静态成员的存储位置)。但在JDK8之后,永久代被移除了,取而代之的是元空间(metaspace)。
静态方法在栈区,在加载初就完成装载,非静态方法就是实例方法吧,实例方法在堆区,初始化完成才能使用。
而static 的变量或者字符串常量 则存在在 data segment(数据区)中;那么类中方法的话,是存在在 code segment(代码区)中了。
相关问答
Q1: java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被...
当类第一次被调用时加载(静态方法,静态属性的加载就是类加载) 。类中的静态属性会被加入到类对象(也可以叫做类的模板,是类的描述) 的构造器中,静态方法也会被加入到类对象中。
只有运行起来的程序才有内存一谈,编译只是把源代码翻译成字节码的过程,字节码是存放在硬盘上的文件,只有当字节码加载到JVM中即类被加载时,才有内存的概念,JVM才会为类中的静态常量分配内存。
new关键字实例化一个类的时候。读取或设置一个的类的静态字段的时候。限只在本类里定义的,继承父类的静态字段不算。静态常量不算。调用一个类的静态方法时。
Q2: java里的静态类占的内存大吗
1、大。java静态变量会在内存中开辟一块静态区域来存储数据,静态变量所占的内存一直都不会回收,一个重型的静态对象将一直占用大量内存且不会释放。
2、本身不可升级,重写,这要看一个软件产品的目的是什么了.为了方便,不用实例化,但这样程序编译运行时就占用了系统资源 静态的属性和方法在程序启动的时候,就全部装入内存的,而不管这些方法、属性以后有没有用到。
3、是存储在 内存的 堆栈里 占用内存大小是 根据 数据类型决定的 静态存储类型的,一定是 全局变量 。不会在程序执行完之前 释放内存 ,而一般 局部变量 在生命周期结束后,会释放内存。
Q3: java中静态变量储存的问题
1、内存空间的使用问题。静态空间在程序结束之前一直存在,从而造成内存空间使用率不高。另一个问题就是如果在函数中使用了静态变量,那么这个函数就会保存上一次调用的一个状态,有时这会导致一些比较微妙的错误。
2、在JDK8之前,静态成员(静态变量和静态方法)都是存储在方法区(永久代)中的静态区中(这里指类被加载后,静态成员的存储位置)。但在JDK8之后,永久代被移除了,取而代之的是元空间(metaspace)。
3、首先,java里面是没有静态变量这个概念的,不信你自己在方法里面定义一个static int i =0;java里只有静态成员变量。它属于类的属性。至于他放在那里?楼上说的是静态区。我不知道到底有没有这个翻译。
4、你们麻烦说清楚点,不要误人 java的static方法变量,在程序运行前,保存在文件中(硬盘),以class文件中中间码存在,在编译时确定内存地址 程序运行时,就将地址映射到内存,等于就进入内存。
Q4: java的静态的类、变量会在应用程序运行期间一直占用内存而不被销毁吗...
静态类变量不会被释放。只有等应用结束才释放。静态类只有在内部类的时候才能被应用 静态类在应用初始化时就放在静态方法区中,是公共共享,应用结束才能回收静态方法区。
静态的类确实会在内存中开辟一块静态区域来存储数据,并且会一直占据内存。但是他只占用一块内存,但是动态的也许会对一个类创建多个对象,这样的话就会比静态的类占据的内存多了。
//因此可以看出,static变量在程序运行结束后是会被销毁的。
java静态代码在内存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于静态代码块放在哪块内存、java静态代码在内存的信息别忘了在本站进行查找喔。






