JAVA中简单的内存问题
栈空间:
用来为调用的方法开辟空间,局部变量会存储在栈空间中。当方法结束时,垃圾回收器会回收方法所占有的内存空间,销毁方法体中的局部变量。它有一个特点,就是存储在栈中的数据可以被共享 ,并且在栈中的元素会服从先进后出规则。
堆空间:
为创建的对象开辟空间,保存对象的属性。当对象不再被任何一个强引用持有,垃圾回收器便会对该对象进行回收,执行finalize()方法,当垃圾回收器再一次扫描发现该对象仍然没有被任何一个强引用所持有时,对该对象内存空间进行回收
方法区:
方法区用来存储由.Java文件编译过后生成的.class文件(字节码文件),所有的方法在被调用之前都存储在该区域。
方法区中的静态区:
用来存放被static修饰符修饰的属性,被static修饰的数据在.Java文件加载成.class文件时,就会加载到该区域,且只会被加载一次。生命周期很长,从生成一直存活到项目结束。
静态区中的常量区:
用来存储字面值常量或被final修饰的变量值。