黑马程序员技术交流社区
标题:
关于java的五个区
[打印本页]
作者:
安仔
时间:
2015-9-18 17:05
标题:
关于java的五个区
众所周知,java有五片区,栈、堆、方法区、寄存器、本地方法区。哪位大神能一一举例分析,简明扼要的阐述下五个区的特点和功能。当然知道多少答多少也可以。
作者:
boboyuwu
时间:
2015-9-18 19:48
我只知道三个
堆 class person{
int i=1;
void simple(int s){
int a=2;
}
} 这是一个类,new person();的时候在堆内存中开辟一个空间存放成员变量,例如举个例子:开辟一个空间地址假如是0x007768, 这个空间里面就存放i ; 那么simple()方法放哪呢?就放到方法区里面,但是记住,simple()放到方法区里面的是方法体而不是局部变量和参数,simple()方法里面的局部变量a,和参数s,都放到栈内存里面, 因为局部变量和参数都放到栈内存中它们有自己的生存周期,方法体调用完毕它们就自动销毁释放空间.关于寄存器和本地方法区还不知道 ,转来研究研究。
对了还有知识点,堆内存存放new出来的对象,这个new出来的空间是由虚拟机回收然后销毁释放的,那么虚拟机什么时候回收呢,对象在堆内存中有三个状态,1.可达状态: 当有一个引用变量指向创建的对象时,这个对象就处于可达状态,因为有引用指向它随时可以访问它里面的数据. 2.可恢复状态:当一个对象没有引用指向它了,也就是说指向它的引用值变成了null时,这个对象成为了无指针指向时,系统就会在某个时间调用finalize( )方法,如果在finalize( )方法里重新使用一个引用指向那个对象,这个对象又会变成可达状态,如果没有引用指向它,那么它就会变成不可达状态此时将会被系统彻底回收无法恢复。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2