栈内存:局部变量和对象的引用变量;
堆内存:对象;
以上是我所知道的,那么static变量和static方法以及普通方法在那个内存中存储呢?
请高手指点,谢谢
static和普通方法都存在堆内存中,堆内存有个永久区permgen,这里面会存类信息。
所以不断的加载类或jar包可能出现permgen oome的错误。
static是在堆内存的数据区。
这个问题你得先了解JVM中内存回收机制,现在用的是分代回收机制,分为新生代,老年代和终生代,声明为static的属性和方法是放在终生代的,存放在此区的数据GC是不会去回收的
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。
栈内存:基本类型数据和对象的引用变量;
堆内存:new的对象和数组;
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。
栈内存:基本类型数据和对象的引用变量;
堆内存:new的对象和数组;
自己声明的在堆中,系统声明的在栈中