A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 安仔 中级黑马   /  2015-9-18 17:05  /  420 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

众所周知,java有五片区,栈、堆、方法区、寄存器、本地方法区。哪位大神能一一举例分析,简明扼要的阐述下五个区的特点和功能。当然知道多少答多少也可以。

1 个回复

倒序浏览
我只知道三个  
堆    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( )方法里重新使用一个引用指向那个对象,这个对象又会变成可达状态,如果没有引用指向它,那么它就会变成不可达状态此时将会被系统彻底回收无法恢复。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马